2 回答
TA贡献1777条经验 获得超3个赞
对于低于 Android 6.0 和高于 Android 6.0 的两者,这对我有用:
声明清单权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
从要清除缓存的位置声明此方法:
private static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) {
e.printStackTrace();
}
}
private static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (String aChildren : children) {
boolean success = deleteDir(new File(dir, aChildren));
if (!success) {
return false;
}
}
return dir.delete();
} else if (dir != null && dir.isFile()) {
return dir.delete();
} else {
return false;
}
}
TA贡献1806条经验 获得超8个赞
我觉得你的问题是
在 Android 6.0 之前,CLEAR_APP_CACHE 的保护级别为危险,因此普通 SDK 应用程序可以在清单中请求它。
从 Android 6.0 开始,CLEAR_APP_CACHE 的保护级别为签名|特权。普通 Android 应用无法持有此权限。只有当您的应用程序使用固件的签名密钥进行签名或者您安装在特权系统分区上时,您才能拥有此权限。
添加回答
举报