我正在开发一个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文档主要关注的是传入的深层链接,而不是传出的链接。
1条答案
按热度按时间mu0hgdu01#
好吧,在这里我回答了我自己的问题,在发布后不到24小时。在编码时,很容易错过最明显的解决方案。
这里的问题是,我在尝试打开它之前,将整个URL设置为“。我最初添加这部分代码是因为我想将方案设置为”,我忘记了一些URL的标识符同时包含“”和“两个字母,因此将整个URL设置为”会更改标识符。
在修改了这段代码,使只是方案的链接,我能够正确地打开谷歌的链接。