Instrumentation KeyEvent.KEYCODE_ENDCALL problem

Put your problem here if it does not fit any of the other categories.

Instrumentation KeyEvent.KEYCODE_ENDCALL problem

Postby phubenig » Sat Nov 22, 2008 12:25 am

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)
phubenig
Junior Developer
Junior Developer
 
Posts: 11
Joined: Tue Oct 07, 2008 11:55 pm

Top

HI Mr. phubenig

Postby rajendrakumar » Mon Jan 12, 2009 4:35 am

Can you please tell me about Instrumentation Testcase and all...

I need to know about this,.,,

If you do this I will be thankful to you ..
pleSe....
rajendrakumar
Developer
Developer
 
Posts: 40
Joined: Thu Jan 01, 2009 7:57 am

Postby karasiov » Mon Jan 12, 2009 9:51 am

read this blog

mylifewithandroid.blogspot.com/2008/12/instrumentation-and-junit.html
karasiov
Once Poster
Once Poster
 
Posts: 1
Joined: Mon Jun 16, 2008 12:15 pm
Location: SPB.RU

Hi phubenig

Postby rajendrakumar » Fri Jan 16, 2009 3:01 pm

Hav you got the solution for that....

am also facing the same problem in my workk


Please help me out in this?
rajendrakumar
Developer
Developer
 
Posts: 40
Joined: Thu Jan 01, 2009 7:57 am

Top

Return to Other Coding-Problems

Who is online

Users browsing this forum: No registered users and 20 guests