首页 > 解决方案 > 来自 Google Drive 的 React Native [Android] URI w/ 'React-Native-Document-Picker' & 'react-native-get-real-path'

问题描述

反应原生 [Android]

三星手机

图书馆:

能够 :

无法:

我来自谷歌驱动器的 URI 是这样的:

content://com.google.android.apps.docs.storage/document/acc%3D2%3Bdoc%3D1

标签: react-nativeurireact-native-android

解决方案


修复了获取 Google Drive 文件的绝对路径的错误。

所以事实证明,我们不能直接从URI选择 Google Drive File 返回的绝对路径中获取。因此,我们需要应用某种 hack 来解决问题。

我所做的是,我将react-native-get-real-pathrepo 分叉到我们自己的 repo 中,然后更改了GRP.java文件中的一些内容。

我基本上是InputStream从获得的谷歌驱动器文件创建的URI,然后使用该流将文件复制到应用程序的缓存目录中,并返回该文件的绝对路径,瞧。

这是解决方案的代码片段:

input = context.getContentResolver().openInputStream(uri);
/* save stream to temp file */
/* displayName is obtained from the URI */
File file = new File(context.getCacheDir(), displayName);
OutputStream output = new FileOutputStream(file);
byte[] buffer = new byte[4 * 1024]; // or other buffer size
int read;

while ((read = input.read(buffer)) != -1) {
  output.write(buffer, 0, read);
}
output.flush();

final String outputPath = file.getAbsolutePath();
return outputPath;

您可以克隆git 存储库https://github.com/Wraptime/react-native-get-real-path/pull/8的参考。


推荐阅读