与其他应用程序共享外部存储文件

时间:2016-04-25 19:22:45

标签: android

我的应用程序将其文件存储在{external storage}/Documents/myappname/file.anyextension中。这是我使用File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOCUMENTS), MYAPPNAME);

时获得的网址

我正在尝试创建一个意图,在图库中的其他应用中打开此文件,以防它是图片。可悲的是它不起作用,只打开画廊或使应用程序崩溃。我试过了:

  • 使用File()提供的真实网址
  • 搜索创建一个FileProvider,但它似乎不适用于{external storage}/Documents文件夹中的文件。 (只有形状{external storage}/appname的缓存/内部或外部文件适用

当我使用文件管理器选择此文件时,它会给我一个网址:content://com.android.externalstorage.documents/document/primary%3ADocuments%2FmyAppName%2Ficon512.png我怎样才能获得这样的网址?

以下是我的代码现在的样子:

Intent intentShareFile = new Intent(Intent.ACTION_VIEW);
String filePath = getFilePath();
Log.d(TAG, "shareFileButton: " + filePath);
File fileWithinMyDir = new File(filePath);
intentShareFile.setData(Uri.fromFile(fileWithinMyDir));

if (fileWithinMyDir.exists()) {
  intentShareFile.setType("*/*");

  startActivity(Intent.createChooser(intentShareFile, "Open file"));
} else {
  Log.d(TAG, "file doesn't exist here");
}

1 个答案:

答案 0 :(得分:0)

找到解决方案......来自setType的文档:

此方法会自动清除以前设置的所有数据(例如{@link #setData})。

感谢您的帮助!