在React-Native应用程序中与另一个应用程序一起打开下载的文件

时间:2019-05-09 11:13:22

标签: react-native react-native-android

我正在尝试打开从服务器上通过我的React-Native应用下载的文件(图像,pdf,视频等)。

所以我正在使用RNFetchBlob下载文件,然后根据是iOS还是Android设备执行以下操作:

openFile = (item, path) => {
    if (Platform.OS === 'ios') {
      RNFetchBlob.ios.previewDocument(path)
    } else {
      // I've tried setting a real mimetype instead of / but it still doesn't work
      RNFetchBlob.android.actionViewIntent(path, '/')
    }
}

在iOS上,它可以按预期工作,但是即使我拥有可以在所测试的设备上读取图像,pdf或视频的应用,在Android上也没有任何反应。

有什么想法为什么不起作用,或者我如何用另一个库做同样的事情?

1 个答案:

答案 0 :(得分:1)

找出原因,这是库的一个已知错误,并且有一个PR等待合并(回购所有者没有时间表)。 这是PR的链接:https://github.com/joltup/rn-fetch-blob/pull/317

因此基本上,这需要添加到文件android/src/main/java/com/RNFetchBlob/RNFetchBlob.java的第122-123行:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

如果上述方法不起作用,请执行以下步骤: 覆盖android/src/main/java/com/RNFetchBlob/RNFetchBlob.java中的121行:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 121 line
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 122 line