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

inkz8wg9  于 6个月前  发布在  React
关注(0)|答案(1)|浏览(85)

我正在开发一个React Native应用程序,它将包含指向许多不同网站的链接。用户应该能够点击链接并被带到正确的位置。然而,目前指向Google Chrome的链接在Android上无法正常工作(尚未在iOS上进行测试)。当用户点击其中一个链接时,它会显示一个错误。如果他们试图通过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 Linking文档中的所有相关说明,在我看来Android文档主要关注的是传入的深层链接,而不是传出的链接。

mu0hgdu0

mu0hgdu01#

好吧,在这里我回答了我自己的问题,在发布后不到24小时。在编码时,很容易错过最明显的解决方案。
这里的问题是,我在尝试打开它之前,将整个URL设置为“。我最初添加这部分代码是因为我想将方案设置为”,我忘记了一些URL的标识符同时包含“”和“两个字母,因此将整个URL设置为”会更改标识符。
在修改了这段代码,使只是方案的链接,我能够正确地打开谷歌的链接。

相关问题