gpt4 book ai didi

android - 自动关闭 chrome 自定义标签

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:39 26 4
gpt4 key购买 nike

我有一个用于打开手机浏览器的应用程序,用户将被重定向到我的网络应用程序,在某个用户操作之后,网络应用程序使用 Intent 过滤器重定向回应用程序

 <application>     
<activity
android:name="com.xyz.sdk.SomeActivity"
android:allowTaskReparenting="true"
android:configChanges="keyboardHidden|orientation|keyboard|screenSize"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<data android:scheme="someString-${applicationId}" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
</application>

最近我迁移到使用 Chrome 自定义选项卡而不是浏览器(出于安全考虑,Webview 不是一个选项)

不幸的是,当在 Chrome 自定义选项卡中重定向回应用程序时,Chrome 自定义选项卡不会自动关闭。即使我可以通过日志验证应用程序已收到响应,自定义选项卡仍保持打开状态并保持在顶部,因此用户无法看到应用程序上发生的事情,直到他关闭应用程序。

我发现的一个解决方法是在启动我的自定义选项卡时设置 NEW_TASK 标志,但这会使我的应用程序和自定义选项卡显示为两个单独的应用程序,这就是我首先离开浏览器的全部原因.

总结:我有应用程序 A,它打开了一个自定义选项卡,在自定义选项卡中打开的 Web 应用程序使用 Intent 过滤器重定向回应用程序 A,但 vustom 选项卡不会关闭并保持在顶部,直到用户手动关闭它.

我已经尝试为自定义标签 Intent 设置 NO_HISTORY 标志,但没有任何区别。

自定义标签代码:

   CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setShowTitle(true)
.setToolbarColor(getToolBarColor())
.setStartAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.build();
customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
customTabsIntent.launchUrl(this, Uri.parse(url));
customTabsIntent.launchUrl(this, Uri.parse(url));

更新我已经意识到,如果 intent 过滤器重定向回另一个应用程序,则自定义选项卡会成功关闭(前提是它是一个单一的 Activity 并且没有历史记录设置为 true)但就我而言,我们需要重定向回调用自定义选项卡的同一 Activity 。

最佳答案

我也遇到了同样的问题,但就我而言,它现在可以正常工作了。

我使用 FLAG_ACTIVITY_NO_HISTORY 和 FLAG_ACTIVITY_CLEAR_TOP 启动了自定义选项卡。

customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

我的 Activity 的启动模式是“singleTop”。

<activity
android:name=".SomeActivity"
android:theme="@style/SomeTheme"
android:configChanges="keyboardHidden|orientation|screenSize"
android:noHistory="true"
android:launchMode="singleTop" >
<intent-filter>
<data android:scheme="intent" />
<data android:scheme="myFile" />
<data android:scheme="myScheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>

@bkant 的重要更新:

I was able to get this to work by changing the launch mode from 'singleTop' to either 'singleTask' or 'singleInstance'. In this mode, the redirect will come to the same Activity via 'onNewIntent'.

关于android - 自动关闭 chrome 自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42530178/

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