मैं, और जब मैं PackageManager में एक छिपे हुए विधि आह्वान मैं एक SecurityException मिलता है, हालांकि मैं अपने ऐप का उपयोग करता है-अनुमति दी हुई है "DELETE_CACHE_FILES"SecurityException जब कॉल एक कैश-क्लीनर आवेदन विकासशील विधि परिलक्षित
उपयोग-अनुमतियां:
uses-permission android:name="android.permission.DELETE_CACHE_FILES"
uses-permission android:name="android.permission.CLEAR_APP_CACHE"
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"
uses-permission android:name="android.permission.GET_PACKAGE_SIZE"
परिलक्षित विधि:
Method method = getPackageManager().getClass().getMethod("deleteApplicationCacheFiles", String.class, IPackageDataObserver.class);
त्रुटि:
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at <MY_PACKAGE_NAME>.MainActivity$1.onClick(MainActivity.java:70)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Neither user 10037 nor current process has android.permission.DELETE_CACHE_FILES.
at android.os.Parcel.readException(Parcel.java:1322)
at android.os.Parcel.readException(Parcel.java:1276)
at android.content.pm.IPackageManager$Stub$Proxy.deleteApplicationCacheFiles(IPackageManager.java:2346)
at android.app.ContextImpl$ApplicationPackageManager.deleteApplicationCacheFiles(ContextImpl.java:2562)
... 14 more
लाइन 70:
method.invoke(getPackageManager(), app.packageName, dataObserver);
इसे कहते हैं मैं नहीं है कि आपके पास अनुमति है, लेकिन मैं अपने प्रकट में यह decleared है ...
संपादित करें: मुझे पता चला यह;
W/PackageManager(62): Not granting permission android.permission.DELETE_CACHE_FILES to package <MY_PACKAGE_NAME>.cachecleaner (protectionLevel=3 flags=0x8be46)
EDIT2: deleteApplicationCacheFiles की घोषणा (method.toGenericString() के माध्यम से यह मिल गया):
public void android.app.ContextImpl$ApplicationPackageManager.deleteApplicationCacheFiles(java.lang.String, android.content.pm.IPackageDataObserver)
इस के लिए कोई समाधान मिला? मैं उत्सुक हूँ –
@Mylleranton क्या आपको कोई समाधान मिला है? – Erum
@ErumHannan मुझे एक समाधान खोजने याद है, लेकिन यह कुछ साल पहले था। मुझे कुछ आधा आवेदन लिखना भी याद है (भयानक लग रहा है) लेकिन कैश सफाई भाग कम से कम काम करता था और लागू किया गया था। चूंकि मुझे याद नहीं है कि मैंने समस्या को कैसे ठीक किया है, मैं पूरी परियोजना को जोड़ रहा हूं: https://www.dropbox.com/s/fjz221fbojm06uj/Utilities2.zip?dl=0 हालांकि आप चाहें कोड का उपयोग करने के लिए स्वतंत्र महसूस करें । – MAA