清除 Marshmallow 以上操作系统版本上的缓存

2024-02-17

我想制作一个 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(使用前将#替换为@)

清除 Marshmallow 以上操作系统版本上的缓存 的相关文章

随机推荐

  • 如何将 Google Cloud AI Platform Jupyter Lab 升级到 Python 3.7+

    Google Cloud Platform的AI Platform可以方便地部署Jupyter Lab 但仅适用于Python 2和Python 3 5 3 如何升级我的实例才能运行 Python 3 7 或更高版本 笔记本 该解决方案是基
  • 在 Visual Studio 2012 的新 C++ 项目中自动创建的 stdafx.cpp 文件是什么

    据我了解 stdafx h 是一个预编译头文件 用于使 Visual Studio 中的编译时间更快 当我在 Visual Studio 2012 中创建 C 项目时 还有一个 stdafx cpp 有人可以解释 stdafx h 和 st
  • 将配置文件共享给多个 docker 容器

    假设我的 Docker 主机上有以下配置文件 并且我希望多个 Docker 容器能够访问该文件 opt shared config file yml 在典型的非 Docker 环境中 我可以使用符号链接 例如 opt app1 config
  • 检测舞台何时再次聚焦并加载场景

    我有一个父舞台 可以在其顶部显示弹出窗口 这是代码 private static Stage chooseBreedStage static chooseBreedStage new Stage chooseBreedStage setTi
  • 在tensorflow keras中采样softmax

    我想在 tf keras 中进行采样的 softmax 损失 我通过子类化 keras 模型来定义自己的模型 在 init 中 我指定了所需的层 包括最后一个密集投影层 但是这个密集层不应该在训练中调用 因为我想做采样的softmax并且只
  • 如何在curl命令中传递标头作为参数? [复制]

    这个问题在这里已经有答案了 我正在尝试执行一个使用预定义变量作为标头的curl 命令 header H Content Type application json H userGUID 7feb6e62 35da 4def 88e9 376
  • 如何使用 Selenium 在 Instagram 弹出框架中向下滚动

    我有一个使用 selenium 的 python 脚本来访问给定的 Instagram 个人资料并迭代用户的关注者 在 Instagram 网站上 当点击查看关注者列表时 会打开一个弹出窗口 其中列出了帐户 这里是该网站的屏幕截图 http
  • 我可以将用户限制在 Google 地图上的特定范围和缩放级别吗?

    我正在网页上实现 Google 地图 出于本项目的目的 我想限制用户可以拖动地图的距离 以便他们只能查看位于两个坐标内的某个区域 一个指定西北 另一个指定东南 如果你明白我的意思 使用 Google Maps API 实现此目的的最佳方法是
  • 批处理文件:无法回显循环内的变量

    我已经跌入谷底 我似乎无法完成这项工作 setlocal EnableDelayedExpansion for g in 1 2 3 do set a c g 32 echo c pause 但它说ECHO已打开 我知道这意味着它没有什么可
  • 如何在 iOS 中以编程方式设置宽高比约束? [复制]

    这个问题在这里已经有答案了 我已经为我的视图控制器使用了自动布局 我已经在约束中设置了 V 和 H 位置 但我想知道当按钮变为 5s 6 和 6 Plus 时如何增加按钮大小 这是我为登录按钮添加约束的方式 NSArray btncon V
  • NSFetchedResultsController 和实体继承

    我的模型事件中有一个父实体 还有两个子实体 生日 周年纪念日 我正在使用核心数据中内置的实体继承功能 以便生日和周年纪念日的父对象是事件 所以我使用以下命令进行获取 NSFetchRequest fetchRequest NSFetchRe
  • R tmap 打印意大利

    我想画一张地图 我需要打印的国家 地区是意大利 我使用以下代码 library sf library raster library dplyr library spData library spDataLarge library tmap
  • Bootstrap 4 面包屑中的文本右对齐

    我想右对齐 Bootstrap 4 的面包屑类中的链接 我用 BS3 中的 pull right 类很容易地做到了这一点 但是 BS4 的 float right 并不能完成这项工作 例如
  • Jquery Ajax 请求调用两次并且第一个请求未在标头中发送令牌

    我正在使用 ajax 调用基于 WCF REST 的服务 ajax 方法在页面加载之前调用 我希望在ajax请求的标头中发送一个 Token 在 fiddler 中 我看到的是这样的 1 请求头中没有令牌的服务请求 AJAX 调用失败 2
  • Highstock inputDateParser 触发三次

    我不确定是什么原因导致它在选择日期后触发三次日期日历 http bootstrap datepicker readthedocs org en release index html 这是设置的选项rangeSelector rangeSel
  • 使用 topojson 映射美国邮政编码时出错

    加载美国邮政编码 topojson 文件后 我在 d3 js 中收到错误 groupdata该行未定义 function bind group groupData var i n group length m groupData lengt
  • boost::bimap 用于枚举

    我正在尝试为 C 中的枚举创建一个简单的双向查找工具 我的单向查找工作正常 enum MyEnum One Two Three const boost unordered map
  • 如何在 Android 中打开拨号器并一步返回您的应用

    在我的应用程序中 我有一个带有电话号码的按钮 当用户单击它时 拨号器应用程序将打开 并显示电话字段中的号码 但是 如果我想从拨号器返回到我的应用程序 我应该按 返回 按钮 3 次 第一次按会关闭拨号器键盘 第二次按会将我带到拨号器历史记录菜
  • NHibernate 投影和“Having”子句

    我正在使用 NHibernate 通过条件 API 查询我的数据库 我的标准如下 ICriteria c Session CreateCriteria typeof Transaction ProjectionList projection
  • 清除 Marshmallow 以上操作系统版本上的缓存

    我想制作一个 Android 应用程序来清理其他应用程序的缓存 我已经弄清楚如何为棉花糖以下的 Android 版本执行此操作 This https github com Frozen Developers android cache cl