如何在SDCard上创建应用程序特定目录,卸载应用程序时应删除该目录

时间:2011-06-14 17:59:05

标签: android

我想使用设备的SD卡在设备上存储我的应用程序文件,图像,缓存文件等,并在我的应用程序中使用它们。我知道我可以使用Context.getFilesDir()/ Context.openFileOutput方法将它们保存在内部存储器中,但我不希望我的应用程序使用内部存储器来保存这些数据。

那么有什么方法可以在SD卡上的目录中创建/保存我的所有应用程序特定文件,但仍然可以让系统知道在卸载应用程序时必须删除这些文件吗?

或者在这种情况下有什么建议。

编辑:我也想支持2.1。

谢谢。

3 个答案:

答案 0 :(得分:6)

您的应用程序在被删除时不会收到通知,因此您可能最好使用应用程序的私人目录(来自getFilesDir())。卸载应用程序时会自动删除该目录。

请记住,如果您使用的是SDK 2.2+,则可以允许用户选择将整个应用程序移动到SD卡,这样您就不必担心此目录的大小。

答案 1 :(得分:5)

应该将应用程序专用的任何文件放在Context.getExternalFilesDir返回的目录中,如果卸载了该应用程序,系统将负责删除该目录。 Link可能有帮助。

答案 2 :(得分:3)

这有点像黑客但它对我有用......

File myFilesDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/<package name>/files");
myFilesDir.mkdirs();

'<package name>'替换为您的包裹名称。

编辑:考虑到这一点,它可能只会在从v2.2开始的Android版本上卸载应用时被“清理”。