gpt4 book ai didi

具有深层链接的 Android 自定义 chrome 选项卡

转载 作者:行者123 更新时间:2023-11-29 01:02:59 25 4
gpt4 key购买 nike

我有一个 Android/Kotlin 应用程序,我想为某些页面配置深层链接以在我的应用程序中打开(看起来是原生的)。

目前,我有意向过滤器将用户重定向到 WebView 的 Activity ,我在其中打开所需的 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 选项卡中启动)和立即将用户重定向回 Activity 的 intent 过滤器之间得到无限循环的重定向:

CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));

如何在不修改 url 的情况下实现与 webview 相同的行为?它甚至可行吗?

最佳答案

我做了一些挖掘,发现您应该搜索支持“加热服务”的软件包。如果返回包,则可以将包名称分配给 Intent。 Google 有一个带有一些辅助类的 GitHub 存储库。有问题的是 CustomTabHelper#getPackageNameToUse() .

所以在你的情况下:

CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
String packageName = CustomTabsHelper.getPackageNameToUse(getContext());

if (packageName != null) {
customTabsIntent.intent.setPackage(packageName);
}
customTabsIntent.launchUrl(this, Uri.parse(url));

如果找不到包,那么您将需要一些回退代码,否则无限循环将继续发生。

关于具有深层链接的 Android 自定义 chrome 选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49689270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com