我有一个应用意图过滤器来打开深层链接的活动,这是我的意图过滤器:
<intent-filter android:autoVerify="true">
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.example.com"
android:pathPattern="/..*"
android:scheme="https" />
</intent-filter>
我的问题是,当用户打开一个链接,即来自消息应用程序的“www.example.com/somepage”,例如Hangout,Whatsapp,Android应用程序选择器不显示其列表中的应用程序,它只显示所有浏览器应用程序选项。但是当用户在消息中添加“https://www.example.com/somepage”然后它可以工作时,Android会在其应用选择器中显示我的应用以打开链接。
当我尝试从我的意图过滤器中删除android:scheme="https"
时,它也不起作用。
有没有人有同样的问题并有解决方案?
任何帮助都非常感激。
答案 0 :(得分:0)
这是预期的行为。
以下代码段的作用是将您的应用注册为URL方案的处理程序https://
<data
android:host="www.example.com"
android:pathPattern="/..*"
android:scheme="https" />
这意味着您的应用将作为以https://
开头并包含www.example.com
的任何链接提供。字符串www.example.com/somepage
不符合条件,因为它缺少https://
部分。
您可以尝试为http://
个链接添加第二个过滤器。我不确定Android是否会自动推断出没有指定方案的网络链接方案,所以这可能会解决问题。
<intent-filter android:autoVerify="true">
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.example.com"
android:pathPattern="/..*"
android:scheme="https" />
<data
android:host="www.example.com"
android:pathPattern="/..*"
android:scheme="http" />
</intent-filter>