如何创建行为与文件管理器

时间:2017-01-17 20:59:12

标签: android android-intent

我想让用户打开以选择要打开文件的应用程序。这是我使用itext 5创建并保存到外部的PDF文件。

我尝试使用下面的代码段强制选择器,结果如下:
http://i.imgur.com/zLfm7Cq.png

// path = /storage/emulated/0/Documents/imagedemo.pdf
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
startActivity(Intent.createChooser(intent, "Open with..."));

如您所见,列表为空。但是,当我尝试从文件管理器(Oxygen OS上的股票应用程序)打开相同的文件时,我收到以下提示:
http://i.imgur.com/OqB4iqY.png

这允许我使用已经云端硬盘的应用来打开PDF并建议可能能够打开此文件类型的其他应用程序( Amazon Kindle )好。

如何创建类似的行为?我应该使用不同的Intent动作吗?

1 个答案:

答案 0 :(得分:1)

/storage/emulated/0/Documents/imagedemo.pdf不是有效的Uri

如果您有File个对象指向该位置,则可以使用Uri.fromFile()来指向Uri。请注意,在Android 7.0+上,一旦targetSdkVersion达到24或更高,这将失败,因为file方案被禁止。您可以使用FileProvider投放此内容,使用FileProvider.getUriForFile()获取Uri中要使用的Intent