我想使用Intent打开任何文件(如果可能)。我定义了openFile(Uri file, String mimeType)
方法,并使用已注册的BroadcastReceiver调用它。这是方法:
private void openFile(Uri file, String mimeType) {
Intent openFile = new Intent(Intent.ACTION_VIEW);
openFile.setData(file);
try {
context.startActivity(openFile);
} catch (ActivityNotFoundException e) {
Log.i(TAG, "Cannot open file.");
}
}
我目前没有使用mimeType
,我只是想让它发挥作用。在具有Uri content://downloads/all_downloads/3980
的.pdf上调用openFile方法的结果只是在pdf查看器中打开的空白pdf(mime类型可能正确解释),其中3980 downloadID显示为文件名。< / p>
我知道发生了什么,因为无论出于何种原因,内容Uri都没有得到妥善解决。我使用Uri localUri = downloadManager.getUriForDownloadedFile(downloadId);
行获取了Uri,其中downloadId
是从downloadManager.enqueue(request);
返回的长
如果我有内容类型Uri,我该如何打开文件?
答案 0 :(得分:7)
致电addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
。否则,其他应用将无权使用Uri
标识的内容。
请注意,仅当您有权使用Uri
标识的内容时,此方法才有效。