Hi Paul...

even i am facing similar issue with instrumentation, like ... i was
able to invoke Phone book contacts application from my activity, but I
am not able to send key events to the contacts application.

Seems that we can send key events.. only to the activities in our
package which is under instrumentation but not to the activities
outside the package. We can launch those activities (i.e., Call ..)
but after that we wont be able to send key events to those. Not sure
whether I am correct, may  be some one can put more light on it...

- Sundar

On Nov 22, 4:06 am, dreamerBoy <[email protected]> wrote:
> The goal of this little test program is to launch initiate a call and
> then generate a press to the ENDCALL button.
>
> 1.  It appears that I am incapable of unlocking the keyguard:
>
> 11-21 14:40:58.445: INFO/InstTest(209): after
> inKeyguardRestrictedInputMode() ? true
>
> 2.  Then, Android tells me I don't have permission to send a key
> event:
>
> 11-21 14:41:00.173: WARN/WindowManager(53): Permission denied:
> injecting key event from pid 209 uid 10019 to window Window{43506808
> com.android.phone/com.android.phone.InCallScreen} owned by uid 1001
>
> EmptyActivity is just as it sounds - no additional code other than
> what Eclipse generates.
>
> If anyone can see something that is not being done correctly, I would
> very much appreciate their thoughts -
>
> Thanks -
>
> Paul
>
> ~~~~
>
> package test.instTest;
>
> import android.app.Activity;
> import android.content.Context;
> import android.content.Intent;
> import android.net.Uri;
> import android.telephony.PhoneStateListener;
> import android.telephony.TelephonyManager;
> import android.test.ActivityInstrumentationTestCase;
> import android.util.Log;
> import android.view.KeyEvent;
> import android.app.Instrumentation;
> import android.view.View;
> import android.content.IntentFilter;
> import android.app.Instrumentation.ActivityResult;
> import android.app.KeyguardManager;
>
> public class InstTest extends
> ActivityInstrumentationTestCase<EmptyActivity>
> {
>    private static final String LOG_TAG    = "InstTest";
>    private TelephonyManager    telMgr;
>    private Instrumentation     instrumentation;
>    private Context             context;
>    private KeyguardManager     keyguardMgr;
>
>    public InstTest()
>    {
>       super("test.instTest", EmptyActivity.class);
>    }
>
>    public void testPreconditions()
>    {
>       instrumentation = getInstrumentation();
>       assertTrue("Instrumentation must be non-null", instrumentation !
> = null);
>       context = instrumentation.getContext();
>       assertTrue("Context must be non-null", context != null);
>       telMgr = (TelephonyManager) context.getSystemService
> (Context.TELEPHONY_SERVICE);
>       assertTrue("TelephonyManager must be non-null", telMgr != null);
>       keyguardMgr = (KeyguardManager) context.getSystemService
> (Context.KEYGUARD_SERVICE);
>       assertTrue("KeyguardManager must be non-null", keyguardMgr !=
> null);
>    }
>
>    public void testCall()
>    {
>       testPreconditions();
>
>       Log.i(LOG_TAG, "before inKeyguardRestrictedInputMode() ? " +
> keyguardMgr.inKeyguardRestrictedInputMode());
>
>       KeyguardManager.KeyguardLock keyguardLock =
> keyguardMgr.newKeyguardLock(LOG_TAG);
>       keyguardLock.disableKeyguard();
>
>       Log.i(LOG_TAG, "after inKeyguardRestrictedInputMode() ? " +
> keyguardMgr.inKeyguardRestrictedInputMode());
>
>       IntentFilter intentFilter = new IntentFilter
> (Intent.ACTION_CALL);
>
>       Uri parsedPhoneNumber = Uri.parse("tel:1234567");
>
>       Intent myIntent = new Intent(Intent.ACTION_CALL,
> parsedPhoneNumber);
>       Intent resultData = new Intent(Intent.ACTION_CALL,
> parsedPhoneNumber);
>       // myIntent = new Intent(Intent.ACTION_DIAL, parsedPhoneNumber);
>
>       myIntent.setFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION |
> Intent.FLAG_FROM_BACKGROUND
>             | Intent.FLAG_ACTIVITY_SINGLE_TOP |
> Intent.FLAG_ACTIVITY_NEW_TASK);
>       resultData.setFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION |
> Intent.FLAG_FROM_BACKGROUND
>             | Intent.FLAG_ACTIVITY_SINGLE_TOP |
> Intent.FLAG_ACTIVITY_NEW_TASK);
>
>       Instrumentation.ActivityResult actResult = new
> Instrumentation.ActivityResult(Activity.RESULT_OK, resultData);
>
>       Instrumentation.ActivityMonitor actMonitor = new
> Instrumentation.ActivityMonitor(intentFilter, actResult, false);
>
>       Log.i(LOG_TAG, "starting call.");
>
>       instrumentation.waitForIdleSync();
>
>       context.startActivity(myIntent);
>
>       instrumentation.waitForIdleSync();
>
>       Log.i(LOG_TAG, "number of hits from ActivityMonitor: " +
> actMonitor.getHits());
>       Activity phoneActivity = actMonitor.getLastActivity();
>       if (phoneActivity != null)
>          Log.i(LOG_TAG, "phoneActivity is NOT NULL!!");
>       else
>          Log.i(LOG_TAG, "phoneActivity is NULL");
>
>       Log.i(LOG_TAG, "before phone state is " + phoneStateToString());
>
>       Activity activity = getActivity();
>       Log.i(LOG_TAG, "activity class is " + activity.getClass());
>
>       View view = getActivity().getCurrentFocus();
>       if (view == null)
>          Log.i(LOG_TAG, "Focus view is NULL");
>       else
>          Log.i(LOG_TAG, "Focus view is NOT NULL");
>
>       Log.i(LOG_TAG, "Sending ENDCALL");
>       sendKeys(KeyEvent.KEYCODE_ENDCALL);
>
>       instrumentation.waitForIdleSync();
>       Log.i(LOG_TAG, "Sent ENDCALL, sleeping");
>
>       sleep(1000);
>
>       Log.i(LOG_TAG, "after phone state is " + phoneStateToString());
>    }
>
> }
>
> ~~~~~~
>
> <?xml version="1.0" encoding="utf-8"?>
> <manifest xmlns:android="http://schemas.android.com/apk/res/android";
>         package="test.instTest" android:versionCode="1"
> android:versionName="1.0.0">
>         <application android:icon="@drawable/icon" android:label="@string/
> app_name">
>                 <uses-library android:name="android.test.runner" />
>                 <activity android:name=".EmptyActivity" 
> android:label="@string/
> app_name">
>                         <intent-filter>
>                                 <action 
> android:name="android.intent.action.MAIN" />
>                                 <category 
> android:name="android.intent.category.LAUNCHER" />
>                         </intent-filter>
>                 </activity>
>         </application>
>         <instrumentation
> android:name="android.test.InstrumentationTestRunner"
>                 android:targetPackage="test.instTest" android:label="first 
> phone key
> test" />
>         <uses-permission android:name="android.permission.CALL_PHONE"></uses-
> permission>
>         <uses-permission android:name="android.permission.READ_PHONE_STATE"></
> uses-permission>
>         <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></
> uses-permission>
> </manifest>
>
> ~~~~~
>
> >adb shell am instrument -w -e class test.instTest.InstTest#testCall 
> >test.instTest/android.test.InstrumentationTestRunner
>
> test.instTest.InstTest:.
> Test results for InstTest=.
> Time: 3.368
>
> OK (1 test)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to