React Native 应用程序无法在 Android 上正确打开指向 Google Docs 的网络链接

React Native app unable to correctly open web links to Google Docs on Android

提问人:Tyla Evans 提问时间:11/17/2023 更新时间:11/17/2023 访问量:20

问:

我正在开发一个React Native应用程序,该应用程序将包含指向许多不同网站的链接。用户应该能够单击该链接并被带到正确的位置。但是,目前指向 Google Docs 的链接在 Android 上无法正常工作(尚未在 iOS 上进行测试)。当用户单击其中一个链接时,它会显示错误。如果他们尝试通过文档应用打开它,则会显示错误“文档查找失败。文档可能已被删除。如果他们尝试通过 Chrome 打开它,它会说“抱歉,您请求的文件不存在。重要的是,如果您获取链接 URL 并将其粘贴到 Chrome 搜索栏中,它会正确显示文档。

这是我进行链接的方式:

import { Linking } from 'react-native';

const onPress = async () => {
    let link = url.toLowerCase();
    if (!/^https?:\/\//.test(link) && !/^mailto:/.test(link)) {
        link = `https://${link}`;
    }
    Linking.openURL(link);
};

Android Manifest.xml 包含以下内容:

<manifest ...>
    ...
    <uses-permission android:name="android.permission.INTERNET" />
    ...
    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https"/>
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="http"/>
        </intent>
    </queries>
</manifest>

版本信息:

react-native: 0.66.5 (yes, I know I need to upgrade, but I'm not sure if it will fix this issue)
minSdkVersion = 21
compileSdkVersion = 33
targetSdkVersion = 33

我已经检查了应用程序尝试打开的链接是否正确。我也尝试浏览了 react-native 链接文档和 Android 文档,但我已经遵循了 react-native 链接文档中的所有相关说明,在我看来,Android 文档主要关注传入的深度链接,而不是传出的深度链接。

Android React-Native google-docs 深度链接

评论


答:

0赞 Tyla Evans 11/17/2023 #1

好吧,我在发布后不到 24 小时就回答了我自己的问题。编码时很容易错过最明显的解决方案。

这里的问题是,在尝试打开它之前,我将整个 URL 设为小写。我最初添加这部分代码是因为我想使方案小写,并且我忘记了某些 URL 会同时具有小写和大写字母的标识符,因此将整个 URL 设置为小写会更改标识符。

修改此代码以使方案仅小写后,我能够正确打开 Google Docs 链接。