React Native 应用程序无法在 Android 上正确打开 Google 文档的 Web 链接

问题描述 投票:0回答:1

我正在开发一个 React Native 应用程序,其中包含许多不同网站的链接。用户应该能够单击链接并被带到正确的位置。但是,目前指向 Google 文档的链接在 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 Linking 文档 Android 文档 但我已经遵循了 React-native 链接文档中的所有相关说明,在我看来 Android 文档主要关注于传入的深层链接,而不是传出的链接。

android react-native google-docs deep-linking
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.