【问题标题】:Clear android application data programmatically以编程方式清除 android 应用程序数据
【发布时间】:2013-12-03 19:01:17
【问题描述】:

手动我可以做

Settings -> Applications -> Manage applications -> (choose my app) -> Clear data

如何以编程方式执行此操作?

我需要删除所有数据,包括共享首选项(和变量)中的数据。

【问题讨论】:

  • 而不是硬编码/data/data/com.example.applicationpackagename/.我如何指定它?因为根据@ChrisStratton 我不能使用getExternalFilesDir(null)

标签: android storage android-memory


【解决方案1】:

您应用程序中的所有内容都存储在这里/data/data/com.example.applicationpackagename/

您的应用程序由对此目录具有 R/W 访问权限的用户运行。

您只需删除其中的所有文件。

信息:Android - How to delete a whole folder and content?

【讨论】:

  • 不完全正确。您没有对该目录中的所有文件具有写入权限 - 例如,包含 jni 库的 libs/ 文件夹。但是我不相信清算应用程序通常会删除它。此外,您不应该假设包的私有目录是什么,而是使用适当的 API 来发现它在特定设备上的内容。
  • 感谢您的意见。但是,使用的答案是:if (dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { new File(dir, children[i]).delete(); } } 还是根据@ChrisStratton 不正确?
  • 好吧,你必须优雅地处理失败或主动跳过你不允许删除的文件夹。
  • 那还好。谢谢你。会考验你。谢谢。
  • 我要传入的文件,和getExternalFilesDir(null)一样吗?如果是这样,那么它不会删除我的共享偏好。我也需要在那一次通话中删除它们。标记@ChrisStratton
【解决方案2】:

您可以使用以下代码,其中“packagename”可以是您的应用程序包名称,例如 com.example.app1

Intent intent = new Intent();
intent.setData(Uri.parse("package:" + packageName));

【讨论】:

    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多