Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:java.lang.SecurityException:用户10110和当前进程都没有android.permission.CLEAR\u APP\u缓存_Java_Android_File_Caching_File Management - Fatal编程技术网

原因:java.lang.SecurityException:用户10110和当前进程都没有android.permission.CLEAR\u APP\u缓存

原因:java.lang.SecurityException:用户10110和当前进程都没有android.permission.CLEAR\u APP\u缓存,java,android,file,caching,file-management,Java,Android,File,Caching,File Management,我在未经允许的情况下使用 private static final long CACHE_APP = Long.MAX_VALUE; private CachePackageDataObserver mClearCacheObserver; btnCache.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearCache();

我在未经允许的情况下使用

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
}

上面的代码适用于提前感谢。

从Android 6.0开始,清除应用程序缓存的权限级别为
签名|特权
。普通Android应用程序无法持有此权限。仅当您的应用程序使用固件的签名密钥签名或您安装在特权系统分区上时,才会授予此权限


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

您是否尝试过在运行时检查并请求此权限?是的,但没有发生任何事情,也没有出现运行时权限对话框。作为参考,我在下面的链接中使用了“仅当您的应用程序使用固件的签名密钥签名或安装在特权系统分区上时,才授予此权限”的可能相关副本。请分享如何使用固件密钥签名应用程序或在/system/priv-app上安装应用程序的步骤。
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>