【问题标题】:Delete system cache on android 6.0在 android 6.0 上删除系统缓存
【发布时间】:2016-07-16 14:51:18
【问题描述】:

我正在使用freeStorageAndNotify() 方法和android.permission.CLEAR_APP_CACHE 权限来删除所有已安装应用程序的系统缓存。但是该方法从android marshmallow 6.0版本开始抛出InvocationTargetException。 谷歌搜索问题后,我发现与此处报告的问题相同: Android M reflection method freeStorageAndNotify exception 所以这里的结论是,freeStorageAndNotify() 停止工作,因为谷歌现在已经将该方法的签名级别提升到签名|系统。

但现在的问题是,“Clean master”等其他第三方应用程序如何仍然能够通过获取用户对 6.0 设备的访问权限来删除所有已安装应用程序的系统缓存?

【问题讨论】:

  • Clean Master 应用不使用辅助功能权限。
  • 你试过peeking进入APK吗?
  • 你试过直接删除缓存文件夹吗? (可能你需要读/写存储访问权限,但我不确定你能做到)

标签: android


【解决方案1】:

我认为“清理大师”实际上并未使用辅助功能权限来清理已安装的应用程序缓存。 但是,如果您有兴趣,可以通过在您的应用程序中使用AccessibilityService 来实现此目标。 在扩展 AccessibilityService 的类中,您有以下回调:

    @Override
    public void onAccessibilityEvent(AccessibilityEvent aEvent) {
       AccessibilityNodeInfo rootNode = aEvent.getSource();
       //...
    }

在这里你可以调用 rootNode.findAccessibilityNodeInfosByViewId() 要么 rootNode.findAccessibilityNodeInfosByText(), 它将返回树中所有匹配的AccessibilityNodeInfo 对象(子节点)。然后,您只需要检测其中哪些是Buttonnode.getClassName())并调用subNode.performAction(AccessibilityNodeInfo.ACTION_CLICK)

在Android M上,您首先需要为具体应用打开系统的App Info屏幕(您可以在此处找到说明How can I start android application info screen programmatically?),并按照上述方案,依次单击“存储”按钮— >“清除缓存”。

为了清除所有已安装应用程序的缓存,您可能必须遍历所有已安装应用程序 (List<ApplicationInfo> installedApplications = context.getPackageManager.getInstalledApplications(0);) 并重复上述过程。

【讨论】:

    【解决方案2】:

    我使用的系统清理器可以访问 STORAGE 权限。此权限赋予应用清除共享外部存储目录中任何数据的权限。

    http://developer.android.com/reference/android/Manifest.permission_group.html#STORAGE

    我认为任何第 3 方应用程序都无法真正清除系统缓存,除非设备已获得 root 权限并且该应用程序是为已获得 root 权限的设备设计的。

    【讨论】:

    • 我知道。我的问题是“Clean Master”应用程序如何通过获取用户的访问权限来做到这一点。
    • Clean Master 只需要 STORAGE 权限。
    • Clean Master 明确要求访问存储权限
    • 如果您查看完整的权限集,Clean Master 根本不使用辅助功能权限。
    • 当您需要清除缓存文件时,Clean master 会向用户请求 Accessibility 权限。
    【解决方案3】:

    这些应用始终只做同样的事情。在旧设备和新设备上使用它,结果是一样的。我看到的唯一帮助是他们可以杀死或重新启动一些后台进程,而不是清理缓存。因此没有 API 可以限制他们的伎俩..

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 2020-09-25
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多