java - 使用 Intent 打开文件 (Android)

标签 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。

No PDF Displayed

我知道发生了什么,因为无论出于何种原因,内容 Uri 都没有被正确解析。我通过 Uri localUri = downloadManager.getUriForDownloadedFile(downloadId); 行获得了 Uri其中 downloadId是从 downloadManager.enqueue(request); 返回的 long

当我有内容类型 Uri 时如何打开文件?

最佳答案

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

请注意,这仅在有权使用该Uri 标识的内容时有效。

关于java - 使用 Intent 打开文件 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940181/

相关文章:

java - 在 Eclipse 调试器中启动后进程暂停

java - 获取JSON字符串的抽象语法树

java - 抛出主要异常和子类型,有没有正确的方法?

java - 如何在使用自定义方式保存数据 RecyclerView 时制作列表更改动画

Android:编辑项目属性 - 更改应用程序名称

Android:如何通过 Intent 在 Facebook 上共享图像和文本?

java - 当我单击第二个 Activity 布局时,它没有启动

java - 如何在 Spring 中使用 Autowiring 的 bean 创建简单工厂模式?

android - Android SimpleCursorAdapter 和 CursorLoader 的使用

android - 使用 Android 教程方法重新缩放图像