微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反应原生 - 无法从共享意图中获取 url

如何解决反应原生 - 无法从共享意图中获取 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 举报,一经查实,本站将立刻删除。