以编程方式清除应用程序缓存?

5

我希望编写一个实用程序,用户可以选择一组已安装的应用程序并清除它们的数据缓存,就像您可以使用内置的设置->应用程序设置屏幕上的“清除缓存”按钮手动执行的方式。

我该如何访问每个应用程序的缓存数据量,并以编程方式清除这些缓存?

2个回答

7
这里给出的答案是错误的,有市场应用程序可以具有编程清除所有应用缓存功能。此外,下列内容在文档中提到:
public static final String CLEAR_APP_CACHE

自:Android API Level 1 允许应用程序清除设备上所有已安装应用程序的缓存。 常量值:
 android.permission.CLEAR_APP_CACHE

请注意“所有已安装应用程序部分”,以及除标准用户权限外,您不需要任何根访问或特殊权限。
我在这里发布是因为我的交付要求在24小时内清除店内演示电话上的所有应用程序缓存,并且我正在尝试弄清楚如何正确使用它。 我知道解决方案的一部分是获得此权限,我也知道如何找到设备上的所有已安装应用程序,并且正在努力能够实际删除缓存。 我的问题是其他应用程序缓存读取为不包含文件(尽管有内容),我怀疑是因为我没有读取访问权限来进行列表文件调用。

@tim,你能否发布一些清除所有应用程序缓存的代码吗?并且可以获取释放的内存量吗? - AkashG

3
普通的SDK应用程序没有访问其他应用程序缓存的权限,更不用说修改了,就像它们没有黑客攻击您的文件的权利一样。
在已经root的手机上,如果您的应用程序以root身份运行,则可能是可能的,此时您将不得不基于应用程序包名称手动构建路径。

好的,谢谢。我看到过一些实用程序可以帮助您管理缓存,但它们必须要求 root 访问权限。有没有一种方法至少列出每个应用程序缓存占用了多少空间?是否有一种方法可以跳转到特定应用程序的“清除缓存”按钮的设置活动? - robosheep
@robosheep:“有没有办法至少列出每个应用程序缓存占用的空间?” - 据我所知,没有,但我并没有专门去寻找它。“是否有某种方法可以跳转到特定应用程序的“清除缓存”按钮的设置活动?” - 请尝试http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS(注意:Android 2.3新增) - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接