使用Intent打开文件(Android)

时间:2017-03-21 23:37:19

标签: java android android-intent

我想使用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>

No PDF Displayed

我知道发生了什么,因为无论出于何种原因,内容Uri都没有得到妥善解决。我使用Uri localUri = downloadManager.getUriForDownloadedFile(downloadId);行获取了Uri,其中downloadId是从downloadManager.enqueue(request);返回的长

如果我有内容类型Uri,我该如何打开文件?

1 个答案:

答案 0 :(得分:7)

致电addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)。否则,其他应用将无权使用Uri标识的内容。

请注意,仅当有权使用Uri标识的内容时,此方法才有效。