如何保存应用程序外部用户可访问的文件,还删除应用程序卸载?

时间:2015-12-17 18:15:32

标签: android

app的要求:

  • 保存的文件在库存设备的文件浏览器中可见。 (用于用户操作)
  • 卸载应用程序时删除文件。

我遇到过这篇文章(How can I let users access the internal storage directory of my app?),其中OP似乎想要我做同样的行为,并且似乎通过使用getExternalFilesDir()[最后发布]解决了这个问题,但是当我使用该方法时我的文件在我的应用以外的用户看不到。那么如何在我的应用程序中获得这两种功能呢?

externalDir = mContext.getExternalFilesDir(null);
File myDir = new File(externalDir.toString() + "/my_snapshots");
myDir.mkdirs()
String fname = "Image-" + n + ".jpg";
            File file = new File(myDir, fname);
FileOutputStream out = new FileOutputStream(file);

MediaScannerConnection.scanFile(mContext, new String[] { file.toString() }, null,
            new MediaScannerConnection.OnScanCompletedListener() {
                public void onScanCompleted(String path, Uri uri) {
                    Log.i("ExternalStorage", "Scanned " + path + ":");
                    Log.i("ExternalStorage", "-> uri=" + uri);
                }
            });

1 个答案:

答案 0 :(得分:1)

  

似乎通过使用getExternalFilesDir()

解决了这个问题

这是正确的解决方案。

  

当我使用该方法时,我的文件对我的应用以外的用户不可见

这是因为您没有使用MediaScannerConnection及其scanFile()方法对文件编制索引。完成此操作后,MTP客户端和使用MediaStore的任何设备上的应用都会看到您的文件。