我有一个 Android/Kotlin 应用程序,我想为某些页面配置深层链接以在我的应用程序中打开(看起来是原生的)。
目前,我有意图过滤器,可将用户重定向到使用 WebView 的活动,在该活动中我打开所需的 url:
<activity android:name=".activity.WebViewActivity">
<intent-filter android:label="Futurity">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="api.example.com"
android:pathPrefix="/auth/confirm"
android:scheme="https" />
</intent-filter>
</activity>
class WebViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_web_view)
val data = intent.data
// construct url
val url = if (intent.data != null ) {
"https://" + data.host + data.path + "?" + data.query
}
appWebView.webViewClient = WebViewClient()
appWebView.loadUrl(url)
}
}
这很好用,但出于安全原因,我想改用 Chrome 自定义标签。
但是,当我尝试配置自定义选项卡而不是 WebView 时,我在页面(在 chrome 选项卡中启动)和立即将用户重定向回活动的意图过滤器之间获得了无限循环的重定向:
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));
如何在不修改 url 的情况下实现与 webviews 相同的行为?它甚至可行吗?