我正在开发一个 Android 应用程序,每次应用程序启动时我都需要清除应用程序的缓存。我目前正在使用此代码来尝试删除缓存:
File dir = new File(cacheFilePath);
if (dir isDirectory()){
File[] files = dir.listFiles();
if (files != null){
for (File file : files){
deleteRecursive(file);
}
}
}
private static void deleteRecursive(File file) {
if (file.isDirectory()){
File[] files = file.listFiles();
if (files != null){
for (File child : files){
deleteRecursive(child);
}
}
}
file.delete();
}
但是,除非我尝试将这些权限添加到 Android 清单中,否则此代码不会正确清除缓存:
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
<uses-permission android:name="android.permission.DELETE_CACHE_FILES"/>
但我收到一条潜在警告,称这些权限仅授予系统应用程序。
权限仅授予系统应用程序。检查信息:具有保护级别签名、特权或签名或系统的权限仅授予系统应用程序,如果应用程序是常规非系统应用程序,则永远无法使用这些权限.
如何以编程方式清除应用程序的缓存而不需要系统权限?
此外,如果我尝试使用这些权限在 Play 商店上发布此应用程序,审核团队是否会因为这两个权限而拒绝该应用程序?是否有任何替代方案或最佳实践来处理此问题?
由于它是您的应用程序,您试图清除,因此不需要任何权限即可执行此操作,只需使用
context.cacheDir
获取缓存文件夹,然后浏览文件并删除它们,就像处理任何其他文件一样。
当设备存储空间不足时,缓存目录也会自动删除其文件