我想为我的应用数据创建一个私人文件夹。从设备中删除应用程序时,必须自动删除此文件夹。根据{{3}},我必须创建一个私人文件夹。我怎样才能做到这一点。我的代码如下。删除应用程序时不会删除文件夹。
public static String getAppFilePath(Context context) {
String path = "";
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
path = Environment.getExternalStorageDirectory()
.getAbsolutePath();
path += "/myFolder";
} else {
ContextWrapper c = new ContextWrapper(context);
path = c.getFilesDir().getPath();
}
File ret = new File(path);
if (!ret.exists()) {
ret.mkdirs();
}
return path;
}
答案 0 :(得分:6)
来自你指出的文件:
如果您要保存专用于您的应用的文件,则可以 通过调用getExternalFilesDir()获取相应的目录 并传递一个名称,指明您想要的目录类型。 以这种方式创建的每个目录都会添加到父目录中 封装了系统所有应用程序的外部存储文件 在用户卸载您的应用时删除。
例如,这是一个可以用来为其创建目录的方法 个人相册:
public File getAlbumStorageDir(Context context, String albumName) { // Get the directory for the app's private pictures directory. File file = new File(context.getExternalFilesDir( Environment.DIRECTORY_PICTURES), albumName); if (!file.mkdirs()) { Log.e(LOG_TAG, "Directory not created"); } return file; }
如果没有预定义的子目录名称适合您的文件,那么您 可以改为调用getExternalFilesDir()并传递null。这会返回 外部应用程序私有目录的根目录 存储
请记住,getExternalFilesDir()会在用户卸载应用时删除目录中的目录。如果 您保存的文件应在用户卸载后保持可用 你的应用程序 - 例如当你的应用程序是一个摄像头而用户想要的时候 保留照片 - 你应该使用 getExternalStoragePublicDirectory()。
所以基本上你需要在上面的例子中使用getExternalFilesDir
函数来删除应用程序时删除它。
<强>参数强>
type要返回的files目录的类型。可能是
null
files目录的根目录或以下常量之一 子目录:DIRECTORY_MUSIC
,DIRECTORY_PODCASTS
,DIRECTORY_RINGTONES
,DIRECTORY_ALARMS
,DIRECTORY_NOTIFICATIONS
,DIRECTORY_PICTURES
或DIRECTORY_MOVIES
。
因此,除了预定义类型,您可以将null
用于目录的根目录。
答案 1 :(得分:-1)
简单来说,你做不到。 这是不可能的,因为卸载应用程序后无法处理事件。