由:java.lang.SecurityException引起:用户10110和当前进程都没有android.permi


private static final long CACHE_APP = Long.MAX_VALUE;
private CachePackageDataObserver mClearCacheObserver;
btnCache.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clearCache();
}
});//End of btnCache Anonymous class
void clearCache() 
{
if (mClearCacheObserver == null) 
{
mClearCacheObserver=new CachePackageDataObserver();
}
PackageManager mPM=getPackageManager();
@SuppressWarnings("rawtypes")
final Class[] classes= { Long.TYPE, IPackageDataObserver.class };
Long localLong=Long.valueOf(CACHE_APP);
try 
{
Method localMethod=
mPM.getClass().getMethod("freeStorageAndNotify", classes);
/*
* Start of inner try-catch block
*/
try 
{
localMethod.invoke(mPM, localLong, mClearCacheObserver);
}
catch (IllegalArgumentException e) 
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e) 
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InvocationTargetException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
* End of inner try-catch block
*/
}
catch (NoSuchMethodException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}//End of clearCache() method
private class CachePackageDataObserver extends IPackageDataObserver.Stub 
{
public void onRemoveCompleted(String packageName, boolean succeeded) 
{
}//End of onRemoveCompleted() method
}//End of CachePackageDataObserver instance inner class

class CachePackageDataObserver extends IPackageDataObserver.Stub {
public void onRemoveCompleted(String packageName, boolean succeeded) {
}//End of onRemoveCompleted() method
}

我正在使用低于权限

<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>

以上代码适用于<Marsh Mellow,但当我在Marshmelow设备导致异常。我读过很多帖子,说CLEAR_APP_CACHE权限是系统保留的,不给第三方。那么Clean master和其他应用程序如何清除android中其他应用程序的内部缓存。请帮我解决这个异常,这样我就可以逐步清除第三方应用程序的缓存。提前感谢。

从Android 6.0开始,CLEAR_APP_CACHE的权限级别为signature|privileged。普通的Android应用程序无法拥有此权限。只有当您的应用程序是用固件的签名密钥签名的,或者您安装在特权系统分区上时,才会授予此权限。

在Android 6.0之前,CLEAR_APP_CACHE的保护级别是危险的,所以普通应用程序可以在清单中请求它。

最新更新