Unable to get android.permission.CLEAR_APP_USER_DATA
android, system
Solution
Error: java.lang.SecurityException: PID 9237 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package
Step 1. Enable Developer Option
Step 2. Enable USB Debugging
Very important Step :
Step 3. Search for "Disable Permission Monitoring" and Enable it. This will help resolving the Issue with Android 8 and above .
Problem
I'm developing system application which requires special permissions. For some reason I can't get permission CLEAR_APP_USER_DATA, but I can use INSTALL_PACKAGES, DELETE_PACKAGES and others. What might cause this? Manifest: ``` uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/> uses-permission android:name="android.permission.CLEAR_APP_CACHE"/> uses-permission android:name="android.permission.INSTALL_PACKAGES"/> uses-permission android:name="android.permission.DELETE_PACKAGES"/> uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/> uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> ``` I removed '<', because it wouldn't show the rest of the lines. My code that uses permission: ``` String apkPackage = intent.getExtras().getString(context.getString(R.string.key_package)); if (apkPackage != null) { PackageManager pm = context.getPackageManager(); Class<?>[] types = new Class[] {String.class, IPackageDataObserver.class}; try { Method methodClearUserData = pm.getClass().getMethod("clearApplicationUserData", types); methodClearUserData.invoke(pm, new Object[] {apkPackage, null}); Method methodDeleteCache = pm.getClass().getMethod("deleteApplicationCacheFiles", types); methodDeleteCache.invoke(pm, new Object[] {apkPackage, null}); } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { Log.w(TAG, "Unable to invoke clear method.", e); } } else { Log.w(TAG, "Provided APK package is null."); } ``` [Edit] ``` 07-15 14:29:32.136: W/RequestReceiver(4367): Unable to invoke clear method. 07-15 14:29:32.136: W/RequestReceiver(4367): java.lang.reflect.InvocationTargetException 07-15 14:29:32.136: W/RequestReceiver(4367): at java.lang.reflect.Method.invokeNative(Native Method) 07-15 14:29:32.136: W/RequestReceiver(4367): at java.lang.reflect.Method.invoke(Method.java:525) 07-15 14:29:32.136: W/RequestReceiver(4367): at com.test.appmanager.RequestReceiver.onReceive(RequestReceiver.java:114) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2558) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.app.ActivityThread.access$1500(ActivityThread.java:165) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.os.Handler.dispatchMessage(Handler.java:107) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.os.Looper.loop(Looper.java:194) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.app.ActivityThread.main(ActivityThread.java:5370) 07-15 14:29:32.136: W/RequestReceiver(4367): at java.lang.reflect.Method.invokeNative(Native Method) 07-15 14:29:32.136: W/RequestReceiver(4367): at java.lang.reflect.Method.invoke(Method.java:525) 07-15 14:29:32.136: W/RequestReceiver(4367): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 07-15 14:29:32.136: W/RequestReceiver(4367): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 07-15 14:29:32.136: W/RequestReceiver(4367): at dalvik.system.NativeStart.main(Native Method) 07-15 14:29:32.136: W/RequestReceiver(4367): Caused by: java.lang.SecurityException: Neither user 10070 nor current process has android.permission.CLEAR_APP_USER_DATA. 07-15 14:29:32.136: W/RequestReceiver(4367): at android.os.Parcel.readException(Parcel.java:1425) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.os.Parcel.readException(Parcel.java:1379) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.content.pm.IPackageManager$Stub$Proxy.clearApplicationUserData(IPackageManager.java:2918) 07-15 14:29:32.136: W/RequestReceiver(4367): at android.app.ApplicationPackageManager.clearApplicationUserData(ApplicationPackageManager.java:1177) 07-15 14:29:32.136: W/RequestReceiver(4367): ... 14 more ```