我正在开发的应用程序是浏览器,并且在特定方案中它也具有自己的深层链接。
由于这些深层链接的性质,它们需要具有“ http” /“ https”方案,以便在未安装应用程序的情况下也可以在浏览器中打开。
当从具有自己的重定向机制的应用程序中打开链接时,这种情况无法工作。 示例:从Gmail打开会导致链接转换为“ http://www.google.com/url?q= ...”
这仅在应用程序还实现了意图过滤器时发生:
<intent-filter android:icon="@drawable/ic_browser" android:label="@string/my_browser">
<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" />
<data android:scheme="https" />
</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:host="a.b.c"
android:scheme="http" />
</intent-filter>
然后,诸如Gmail之类的应用程序将不会创建重定向,而是会使用深层链接正确打开我的应用程序。
所以我希望的行为是: 1.有一个“浏览器”意图过滤器,可以打开任何Web链接,因此我可以在我的应用程序中显示它 2.设置“深层链接”意图过滤器,这样我就可以在应用程序中使用深层链接,而该链接不会在浏览器中打开。
同样,只要Gmail不会决定创建重定向URL,此方法就可以正常工作-我希望以一种安全可靠的方式来克服这一点。