清除棉花糖以上OS版本上的缓存

Rah*_*602 5 android application-cache

我想制作一个Android应用程序,它将清除其他应用程序的缓存。我已经想出如何在棉花糖以下的Android版本中做到这一点。

是我用于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");
    }
Run Code Online (Sandbox Code Playgroud)

但是我有一个问题要弄清楚如何针对Android版本棉花糖及更高版本执行此操作。

市场上存在的其他缓存清理器是否能够通过获得可访问性许可或任何其他方式来执行此操作?

Raj*_*h K 1

从Android 6.0(Marshmallow)开始,任何普通应用程序都不允许清除其他应用程序的缓存。仅当您的应用程序是系统应用程序或由与系统签名相同的证书签名时,您才可以清除其他应用程序的缓存。但有一个窍门告诉你如何做到这一点。

您可以使用辅助服务(您正确指出的)来执行此操作。

据我所知,您可以显示缓存值,然后询问用户访问权限,授予权限后打开设置屏幕-->转到存储-->单击缓存按钮,然后按确定。

请记住,这只是一种破解,可能会根据各种 OEM 和 Android 版本产生错误。

至于如何实现,是一个很好的例子来探索如何使用无障碍服务。

另外,请记住,您需要获得 Google Play 的预先批准才能使用辅助功能,否则可能会从 PLAY 商店中删除该应用程序。请在进行更新之前获得许可,否则他们可能会暂停或终止您的应用程序。对此要非常小心。