8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

有没有办法重用包含相同 URL 的相同 Chrome 自定义选项卡。Android - Java

beautifulsouper 1月前

34 0

我正在使用以下库:androidx.browser:browser:1.5.0当前场景:我的应用程序包含一个按钮,单击该按钮时,会使用 Chrome 自定义选项卡启动 URL。问题是当使用...

我正在使用以下库: androidx.browser:browser:1.5.0

  • p2

  • p3

我尝试使用 CustomTabsSession 并将其添加到 CustomTabsIntent ,这样每次启动 URL 时,我都会检查会话是否为空。如果是,我将重用之前创建的自定义选项卡。但不幸的是,它不起作用!检查下面的代码(当单击应该启动 URL 的按钮时,将调用以下方法):

注意: 清单中的 MainActivity “我的” singleInstance .

private void initCustomTabs() {
    if (customTabsSession == null) {
        customTabsServiceConnection = new CustomTabsServiceConnection() {
            @Override
            public void onCustomTabsServiceConnected(@NonNull ComponentName name, @NonNull CustomTabsClient client) {
                customTabsClient = client;
                customTabsSession = customTabsClient.newSession(null);
                launchCustomTab(myURL);
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {
                customTabsClient = null;
                customTabsSession = null;
            }
        };
        CustomTabsClient.bindCustomTabsService(MainActivity.this, "com.android.chrome", customTabsServiceConnection);
    } else {
        launchCustomTab(myURL);
    }
}

private void launchCustomTab(String url) {
    CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
    builder.setSession(customTabsSession);
    CustomTabsIntent customTabsIntent = builder.build();
    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
}
帖子版权声明 1、本帖标题:有没有办法重用包含相同 URL 的相同 Chrome 自定义选项卡。Android - Java
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由beautifulsouper在本站《android》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 不要在每次连接时都创建新会话,而只需创建一次,此外(当知道时 CustomTabsSessionToken sessionToken )使用方法 postMessage() 。该方法的签名显示了如何使用它:

    @CustomTabsService.Result
    protected abstract int postMessage(
        @NonNull CustomTabsSessionToken sessionToken,
        @NonNull String message,
        @Nullable Bundle extras
    )
    

    虽然您的代码似乎没有考虑任何 CustomTabsSessionToken ,但可以使用方法 getSessionTokenFromIntent() 。不要与 CustomTabsSession 。基本上,可以使用会话令牌控制自定义选项卡活动。 WebView 将是相同的实例, Activity 并且确实更容易加载这个或那个URL,而不必担心打开太多 Intent.FLAG_ACTIVITY_SINGLE_TOP ,因为您在那里有它。

返回
作者最近主题: