android上的内部/外部存储上的私人文件夹

时间:2015-10-20 09:01:10

标签: android file

我想为我的应用数据创建一个私人文件夹。从设备中删除应用程序时,必须自动删除此文件夹。根据{{​​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;
    }

2 个答案:

答案 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函数来删除应用程序时删除它。

根据getExternalFilesDir()

的文档
  

<强>参数

     

type要返回的files目录的类型。可能是null   files目录的根目录或以下常量之一   子目录:DIRECTORY_MUSICDIRECTORY_PODCASTS,   DIRECTORY_RINGTONESDIRECTORY_ALARMSDIRECTORY_NOTIFICATIONS,   DIRECTORY_PICTURESDIRECTORY_MOVIES

因此,除了预定义类型,您可以将null用于目录的根目录。

答案 1 :(得分:-1)

简单来说,你做不到。 这是不可能的,因为卸载应用程序后无法处理事件。