Android深层链接省略了某些网址

前端之家收集整理的这篇文章主要介绍了Android深层链接省略了某些网址前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已成功实现了对我的应用程序的深层链接,但我遇到了问题.
<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
       android:host="*.example.com"
       android:scheme="https"/>
</intent-filter>

此意图过滤器处理所有链接,但我不想捕获某个URL,即

https://www.example.com/hello/redirect/

到目前为止我尝试了什么:

我尝试输入我想要手动捕获的所有网址

<data
   android:host="*example.com"
   android:scheme="https"
   android:pathPrefix="/m/">
<data
   android:host="*example.com"
   android:scheme="https"
   android:pathPrefix="/c/">
<data
   android:host="*example.com"
   android:scheme="https"
   android:pathPrefix="/p/">
...

但是我的主页网址https://www.example.com不起作用.

如果我使用

android:pathPrefix="/"

然后这将开始再次捕获所有URL,包括我想省略的URL.

我也尝试过使用android:pathPattern,但它无法理解像这样复杂的正则表达式^((?!redirect).)* $当我在字符串中尝试它时,它工作正常.

有谁知道如何省略某些网址?

更新:

正如@PLNech here所建议的那样,我使用android:pathPrefix添加了我需要捕获的所有URL,并使用android:path:“/”来捕获我的主页的URL,即https://www.example.com/

<data
   android:host="*.example.com"
   android:scheme="https"
   android:path="/"/>
 <data
  android:host="*example.com"
  android:scheme="https"
  android:pathPrefix="/m/">
 <data
  android:host="*example.com"
  android:scheme="https"
  android:pathPrefix="/c/">
 <data
  android:host="*example.com"
  android:scheme="https"
  android:pathPrefix="/p/">

解决方法

Android deep linking mechanism没有提供从Android深度链接机制明确排除某些URL的方法:你可以 either包含android:path路径显式路径,包含与android:pathPrefix匹配前缀的路径,或者匹配带有android:pathPattern的通配符,你可以使用* 要么 .*.

在您的情况下,您必须使用“/”并使用您的应用程序(包括您的主页)打开您网站的每个链接,或者让每个深层链接共享一个共同的前缀.

您还可以查看airbnb的DeepLinkDispatch库,该库似乎是allow excluding specific URLs.

猜你在找的Android相关文章