-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello.
I'm trying to have restartPackage() work - please note that I'm aware of all the discussions related to APIs for restarting another application; I'm not trying to do this in production, but during functional tests in order to be sure to have the application under test to start clean every time (without it, I'm currently forced to run one functional test at a time with adb, which is an annoyance). I know that restartPackage() has been deprecated in 2.2 and now is equivalent to killBackgroundProcesses(), which is perfectly fine for me. This is the code I'm trying (from setUp() of an ActivityInstrumentationTestCase2): private void resetApplication() { logger.info("******** RESTARTING APP"); final Context context = getInstrumentation().getContext(); // also tried with getTargetContext(), even though I suppose getContext() is correct final ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); manager.restartPackage("it.tidalwave.bluebill.mobile.android"); } but I constantly get: W/ActivityManager( 1280): Permission Denial: restartPackage() from pid=6014, uid=10071 requires android.permission.RESTART_PACKAGES I/TestRunner( 6014): failed: testRun(it.tidalwave.bluebill.mobile.android.test.functional.InsertOneObservationFromScratch) I/TestRunner( 6014): ----- begin exception ----- I/TestRunner( 6014): I/TestRunner( 6014): java.lang.SecurityException: Permission Denial: restartPackage() from pid=6014, uid=10071 requires android.permission.RESTART_PACKAGES I/TestRunner( 6014): at android.os.Parcel.readException(Parcel.java:1218) I/TestRunner( 6014): at android.os.Parcel.readException(Parcel.java:1206) I/TestRunner( 6014): at android.app.ActivityManagerProxy.restartPackage(ActivityManagerNative.java:2383) I/TestRunner( 6014): at android.app.ActivityManager.restartPackage(ActivityManager.java:910) I/TestRunner( 6014): at it.tidalwave.bluebill.mobile.android.ScenarioTestSupport.resetApplication(ScenarioTestSupport.java:183) I/TestRunner( 6014): at it.tidalwave.bluebill.mobile.android.ScenarioTestSupport.setUp(ScenarioTestSupport.java:87) I/TestRunner( 6014): at it.tidalwave.bluebill.mobile.android.test.functional.ObservationScenarioTestSupport.setUp(ObservationScenarioTestSupport.java:48) I/TestRunner( 6014): at junit.framework.TestCase.runBare(TestCase.java:125) I/TestRunner( 6014): at junit.framework.TestResult$1.protect(TestResult.java:106) I/TestRunner( 6014): at junit.framework.TestResult.runProtected(TestResult.java:124) I/TestRunner( 6014): at junit.framework.TestResult.run(TestResult.java:109) I/TestRunner( 6014): at junit.framework.TestCase.run(TestCase.java:118) I/TestRunner( 6014): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) I/TestRunner( 6014): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) I/TestRunner( 6014): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430) I/TestRunner( 6014): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) I/TestRunner( 6014): ----- end exception ----- Of course I put the required permission in the AndroidManifest.xml: <?xml version="1.0" encoding="UTF-8"?> <manifest package="it.tidalwave.bluebill.mobile.android.tests" android:versionCode="1545" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="0.14.0-SNAPSHOT"> <uses-sdk android:minSdkVersion="3"/> <uses-permission android:name="android.permission.INJECT_EVENT"/> <uses-permission android:name="android.permission.RESTART_PACKAGES"/> <application android:label="blueBill Mobile Functional Tests"> <uses-library android:name="android.test.runner"/> </application> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="it.tidalwave.bluebill.mobile.android" android:label="Tests for blueBill Mobile for Android."/> </manifest> The app with tests is signed with the same signature of the app under test (the debug key). It happens both with the emulator (1.5 and 2.2) and a Motorola Droid (2.1). Of course the 2.2 with the variant that the required permission is android.permission.KILL_BACKGROUND_PROCESSES. Why am I still getting the error? Thanks. - -- Fabrizio Giudici - Java Architect, Project Manager Tidalwave s.a.s. - "We make Java work. Everywhere." java.net/blog/fabriziogiudici - www.tidalwave.it/people fabrizio.giud...@tidalwave.it -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.14 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkxdDr4ACgkQeDweFqgUGxcRFgCgkkyp8VcxyqPCfUkqs7U6HQ5R s5YAn3V2dETNVU7Lga6vHhf7JQB1WQEm =kRZ5 -----END PGP SIGNATURE----- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en