Note that there are some explanatory texts on larger screens.

plurals
  1. POTroubles installing programmatically an app with INSTALL_PACKAGES permission from /system/app
    primarykey
    data
    text
    <p>I'm trying to install programmatically an app without user interaction and i'm getting this error</p> <pre><code> SecurityException: Neither user 10057 nor current process has android.permission.INSTALL_PACKAGES </code></pre> <p>My installer is located in /system/app on rooted phone, "Install non market apps" is checked , the installer has permission</p> <pre><code>&lt;uses-permission android:name="android.permission.INSTALL_PACKAGES"/&gt; </code></pre> <p>This is my call function</p> <pre><code> private void puk(Context context) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{ String fileName = PAKAGE_FILE_NAME ; String dir_type = Environment.DIRECTORY_DOWNLOADS; File dir= Environment.getExternalStoragePublicDirectory(dir_type); java.io.File file = new java.io.File(dir ,fileName); Uri packageUri = Uri.fromFile(file); PackageManager pm = context.getPackageManager(); Class&lt;? extends PackageManager&gt; o = pm.getClass(); Method[] allMethods=o.getMethods(); for (Method m : allMethods) { if (m.getName().equals("installPackage")) { Log.e(TAG, "installing the app.." ); m.invoke(pm,new Object[] { packageUri, null, 1, "com.mic.zapp"}); break; } } } </code></pre> <p>I'm getting this error</p> <pre><code> 11-15 02:46:23.320: W/System.err(10848): java.lang.reflect.InvocationTargetException 11-15 02:46:23.330: W/System.err(10848): at java.lang.reflect.Method.invokeNative(Native Method) 11-15 02:46:23.330: W/System.err(10848): at java.lang.reflect.Method.invoke(Method.java:507) 11-15 02:46:23.330: W/System.err(10848): at com.mic.pvtapi.PvtApiReflectActivity.puk(PvtApiReflectActivity.java:56) 11-15 02:46:23.330: W/System.err(10848): at com.mic.pvtapi.PvtApiReflectActivity.onCreate(PvtApiReflectActivity.java:28) 11-15 02:46:23.330: W/System.err(10848): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-15 02:46:23.330: W/System.err(10848): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722) 11-15 02:46:23.330: W/System.err(10848): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 11-15 02:46:23.330: W/System.err(10848): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 11-15 02:46:23.330: W/System.err(10848): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 11-15 02:46:23.330: W/System.err(10848): at android.os.Handler.dispatchMessage(Handler.java:99) 11-15 02:46:23.330: W/System.err(10848): at android.os.Looper.loop(Looper.java:130) 11-15 02:46:23.330: W/System.err(10848): at android.app.ActivityThread.main(ActivityThread.java:3835) 11-15 02:46:23.330: W/System.err(10848): at java.lang.reflect.Method.invokeNative(Native Method) 11-15 02:46:23.330: W/System.err(10848): at java.lang.reflect.Method.invoke(Method.java:507) 11-15 02:46:23.330: W/System.err(10848): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 11-15 02:46:23.330: W/System.err(10848): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 11-15 02:46:23.330: W/System.err(10848): at dalvik.system.NativeStart.main(Native Method) 11-15 02:46:23.330: W/System.err(10848): Caused by: java.lang.SecurityException: Neither user 10057 nor current process has android.permission.INSTALL_PACKAGES. 11-15 02:46:23.340: W/System.err(10848): at android.os.Parcel.readException(Parcel.java:1322) 11-15 02:46:23.340: W/System.err(10848): at android.os.Parcel.readException(Parcel.java:1276) 11-15 02:46:23.340: W/System.err(10848): at android.content.pm.IPackageManager$Stub$Proxy.installPackage(IPackageManager.java:2037) 11-15 02:46:23.340: W/System.err(10848): at android.app.ContextImpl$ApplicationPackageManager.installPackage(ContextImpl.java:2613) </code></pre> <p>I have readed that ti is possible to gain INSTALL_PAKAGES permissions in two ways: signing the app with firmware's key or putting the app in the firmware. My app is runng from /system/app so it has to gain privileges. </p> <p>Some one know what is wrong and give me some hints? Thanks</p> <h2>EDIT:</h2> <h2>One step forward, two steps backward</h2> <p>i'we added new permission to the app</p> <pre><code> &lt;permission android:name="com.mic.pvtapi.permission.INS_AP" android:label="etichetta_perm" android:protectionLevel="signatureOrSystem" /&gt; &lt;uses-permission android:name="com.mic.pvtapi.permission.INS_AP"/&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&gt; </code></pre> <p>no more error</p> <pre><code>Neither user 10057 nor current process has android.permission.INSTALL_PACKAGES </code></pre> <p>but the new one </p> <pre><code> 11-15 19:43:58.895: I/ActivityManager(1838): Displayed com.mic.pvtapi/.PvtApiReflectActivity: +421ms 11-15 19:43:58.955: D/dalvikvm(4008): GC_EXPLICIT freed 3K, 51% free 2681K/5379K, external 0K/0K, paused 132ms 11-15 19:43:58.955: W/ActivityManager(1838): No content provider found for: 11-15 19:43:58.955: E/PackageManager(1838): Couldn't create temp file for downloaded package file. 11-15 19:43:58.955: W/dalvikvm(1838): threadid=13: thread exiting with uncaught exception (group=0x40018560) 11-15 19:43:58.965: E/AndroidRuntime(1838): *** FATAL EXCEPTION IN SYSTEM PROCESS: PackageManager 11-15 19:43:58.965: E/AndroidRuntime(1838): java.lang.NullPointerException 11-15 19:43:58.965: E/AndroidRuntime(1838): at com.android.server.PackageManagerService$FileInstallArgs.createCopyFile(PackageManagerService.java:5247) 11-15 19:43:58.965: E/AndroidRuntime(1838): at com.android.server.PackageManagerService$FileInstallArgs.copyApk(PackageManagerService.java:5255) 11-15 19:43:58.965: E/AndroidRuntime(1838): at com.android.server.PackageManagerService$InstallParams.handleStartCopy(PackageManagerService.java:5051) 11-15 19:43:58.965: E/AndroidRuntime(1838): at com.android.server.PackageManagerService$HandlerParams.startCopy(PackageManagerService.java:4902) 11-15 19:43:58.965: E/AndroidRuntime(1838): at com.android.server.PackageManagerService$PackageHandler.doHandleMessage(PackageManagerService.java:516) 11-15 19:43:58.965: E/AndroidRuntime(1838): at com.android.server.PackageManagerService$PackageHandler.handleMessage(PackageManagerService.java:461) 11-15 19:43:58.965: E/AndroidRuntime(1838): at android.os.Handler.dispatchMessage(Handler.java:99) 11-15 19:43:58.965: E/AndroidRuntime(1838): at android.os.Looper.loop(Looper.java:130) 11-15 19:43:58.965: E/AndroidRuntime(1838): at android.os.HandlerThread.run(HandlerThread.java:60) 11-15 19:43:58.975: I/Process(1838): Sending signal. PID: 1838 SIG: 9 11-15 19:43:59.005: I/ServiceManager(1637): service 'SurfaceFlinger' died </code></pre> <p>make my phone crash, freez and reboot</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload