如何解决反应原生 - 无法从共享意图中获取 url
我希望可以与我的本机应用程序共享网页。在用户与我的应用程序共享后,我需要能够提取 url。 这是我的 AndroidManifest.xml 的一部分
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.broWSABLE" />
<data android:scheme="https"/>
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.broWSABLE" />
<data android:scheme="http"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
这是我在 react native 中尝试检索 url 的代码 -
useEffect(() => {
Linking.getinitialURL().then((url) => {
if (url) {
alert('got url ',url);
}
}).catch((e) => {
alert('got some error ',e)
});
},[]);
useEffect(() => {
const callback = (url) => alert("get url when app was open " + decodeURI(url));
Linking.addEventListener('url',callback);
return () => {
Linking.removeEventListener('url',callback);
};
},[]);
这里有 2 个选项 - 一个是在应用程序已经打开时,另一个是在应用程序被共享过程打开时。 我在任何选项中都没有得到网址。 我正在以非调试模式连接到我的笔记本电脑的真实 android 设备上运行该应用程序。 该应用似乎一直在不断刷新自己。
有人能解释一下我做错了什么吗?
谢谢
解决方法
我认为您将深层链接和共享菜单混为一谈。 如果您想将网址分享到您的应用程序,您可以使用此扩展程序 https://www.npmjs.com/package/react-native-share-menu。这会将您的应用添加为目标,同时从其他应用/浏览器共享。
const handleShare = useCallback((item: ?SharedItem) => {
if (!item) {
return;
}
const { mimeType,data,extraData } = item;
setSharedData(data);
setSharedMimeType(mimeType);
// You can receive extra data from your custom Share View
console.log(extraData);
},[]);
useEffect(() => {
ShareMenu.getInitialShare(handleShare);},[]);
您可以在“item: ?SharedItem”的“data”字段中找到您要查找的网址
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。