我想制作一个 Android 应用程序来清理其他应用程序的缓存。我已经弄清楚如何为棉花糖以下的 Android 版本执行此操作。
This https://github.com/Frozen-Developers/android-cache-cleaner/blob/master/CacheCleaner/src/main/java/com/frozendevs/cache/cleaner/model/CleanerService.java我在 Android Honeycom 及以上版本中使用的是:
if (isExternalStorageWritable()) {
final File externalDataDirectory = new File(Environment
.getExternalStorageDirectory().getAbsolutePath(), "/Android/data");
final String externalCachePath = externalDataDirectory.getAbsolutePath() +
"/%s/cache";
if (externalDataDirectory.isDirectory()) {
final File[] files = externalDataDirectory.listFiles();
for (File file : files) {
if (!deleteDirectory(new File(String.format(externalCachePath,
file.getName())), true)) {
Log.e(TAG, "External storage suddenly becomes unavailable");
return false;
}
}
} else {
Log.e(TAG, "External data directory is not a directory!");
}
} else {
Log.d(TAG, "External storage is unavailable");
}
但我在弄清楚如何为 Android 版本 Marshmallow 及更高版本执行此操作时遇到问题。
市场上存在的其他缓存清理器能够通过获取可访问权限或任何其他方式来执行此操作吗?
从Android 6.0(Marshmallow)开始,任何普通应用程序都不允许清除其他应用程序的缓存。仅当您的应用程序是系统应用程序或由与系统签名相同的证书签名时,您才可以清除其他应用程序的缓存。但有一个窍门告诉你如何做到这一点。
您可以使用辅助服务(您正确指出的)来执行此操作。
据我所知,您可以显示缓存值,然后询问用户访问权限,授予权限后打开设置屏幕-->转到存储-->单击缓存按钮,然后按确定。
请记住,这只是一种破解,可能会根据各种 OEM 和 Android 版本产生错误。
谈到如何实现目标,this https://github.com/parthdave93/AccessibilityServiceExample是探索如何使用无障碍服务的一个很好的例子。
另外,请记住,您需要获得 Google Play 的预先批准才能使用辅助功能,否则可能会从 PLAY 商店中删除该应用程序。请在进行更新之前获得许可,否则他们可能会暂停或终止您的应用程序。对此要非常小心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)