清除另一个应用缓存

时间:2012-12-27 00:16:49

标签: java android caching securityexception

我一直在这里阅读有关清理其他应用程序的内容,我也尝试编写自己的应用程序。我得到的结果是,使用Androids当前的安全层,这是不可能的。

但是,目前市场上有许多缓存清理应用程序(Google Play)?

当我启动我的android.permission.DELETE_CACHE_FILES权限申请时,LogCat打印

Not granting permission android.permission.DELETE_CACHE_FILES to package <MY_PACKAGE_NAME> (protectionLevel=3 flags=0x8be46)

经过一些研究后我发现3:第一方应用程序不会被protectionLevel=3授予权限所以,每当我尝试删除另一个应用程序缓存(逻辑上)时,我会遇到java.lang.SecurityException

我的问题是:“Google Play上的这些应用程序如何允许并能够删除其他应用程序缓存?”

抱歉我的英语不好,不是母语

2 个答案:

答案 0 :(得分:4)

如果设备已植根且您的应用程序具有超级用户权限,则只能执行此操作。

答案 1 :(得分:0)

让我告诉你这些应用程序是如何实现这一目标的。

某些android classes have methods默认情况下为private(@hidden)用户。我们无法直接访问。但是你有更好的方法来使用Reflection

添加权限。

<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>

并按照这些答案

https://stackoverflow.com/a/17334600/3496570

https://stackoverflow.com/a/14509140/3496570

并且不要忘记创建package名称android.content.pm并添加IPackageDataObserver.aidl来打包。那你很高兴。