我想让用户打开以选择要打开文件的应用程序。这是我使用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动作吗?
答案 0 :(得分:1)
/storage/emulated/0/Documents/imagedemo.pdf
不是有效的Uri
。
如果您有File
个对象指向该位置,则可以使用Uri.fromFile()
来指向Uri
。请注意,在Android 7.0+上,一旦targetSdkVersion
达到24或更高,这将失败,因为file
方案被禁止。您可以使用FileProvider
投放此内容,使用FileProvider.getUriForFile()
获取Uri
中要使用的Intent
。