当前位置: 首页 > 知识库问答 >
问题:

如何关闭chrome自定义选项卡

许黎明
2023-03-14

在我的应用程序中,我通过Chrome自定义标签打开了一个url。我们知道,当用户点击设备后退按钮或自定义后退按钮时,Chrome自定义标签会被关闭。是否有可能关闭Chrome自定义标签通过编程而不需要用户干预。

共有1个答案

狄信然
2023-03-14

目前没有这样的支持关闭chrome自定义选项卡编程。但是如果你想要的话,你可以从启动chrome custom tab的地方开始你以前的活动来关闭它。

让你从“MainActivity”打开chrome custom tab,在chrome custom tab中有一个选项菜单项“close”,在“close”菜单项上点击你想关闭chrome custom tab并返回“MainActivity”,然后启动“MainActivity”就可以了。为此,请将活动launchMode设置为singletask,然后在单击按钮时使用flag_activity_clear_top启动活动。

检查我的演示代码的细节,希望它将帮助某人谁想要这样的东西。

AndroidManifest.xml:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<receiver
    android:name=".CustomTabReceiver"
    android:enabled="true" />

mainactivity.java

    public class MainActivity extends Activity {
    public static String CHROME_PACKAGE_NAME = "com.android.chrome";
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this;
    }

    public void onClick(final View view) {
        switch (view.getId()) {
            case R.id.btnOpenChromeCustomTab:
                launchChromeCustomTab();
                break;
            default:
                return;
        }
    }

    private void launchChromeCustomTab() {
        Uri uri = Uri.parse("http://www.google.com/");
        Intent intent = new Intent(mContext, CustomTabReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);

        CustomTabsIntent.Builder customTabsBuilder = new CustomTabsIntent.Builder();
        customTabsBuilder.addMenuItem("Close", pendingIntent);
        CustomTabsIntent customTabsIntent = customTabsBuilder.build();
        customTabsIntent.intent.setPackage(CHROME_PACKAGE_NAME);
        customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        customTabsIntent.launchUrl(mContext, uri);
    }

}
public class CustomTabReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Intent myIntent = new Intent(context, MainActivity.class);
            myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(myIntent);
        }

    }
<Button
    android:id="@+id/btnOpenChromeCustomTab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:onClick="onClick"
    android:text="Open Chrome Custom Tab" />

注意:
在测试此代码之前,请通过显式检查确保已在设备上安装更新的chrome。因为在此演示代码中,chrome自定义选项卡已通过将硬编码包设置为com.android.chrome而打开,而在未安装chrome的系统上,应用程序可能会中断。
所以请遵循最佳实践来启动chrome自定义选项卡。

 类似资料:
  • 我有一个活动,将一个外部url加载到我应用程序内的webview中。我想使用Chrome自定义标签,当它可用,但我支持的设备可能没有一个版本的Chrome支持他们。 它说,如果绑定成功,自定义选项卡可以安全使用。有没有一个简单的方法绑定来测试这个? 我假设是这样的:

  • 我正在我的android应用程序中实施Fit-bit rest客户端授权。我使用自定义选项卡打开Fitbit授权URL,如“https://www.fitbit.com/oauth2/authorize?response_type=code 未报告此行为的日志。 任何建议都可能有助于我理解这种行为。

  • 在使用网页视图时,我可以使用重新加载()来刷新网页。但是在Chrome自定义标签中,我如何重新加载网页?请引导我。 谢谢

  • 我正在尝试制作一个活动,它有几个文本视图,这些文本视图反过来又包含超链接。我使用了以下教程:http://www.android-examples.com/add-hyperlink-in-android-application-through-textview/ 我想让这些链接在chrome自定义标签点击时打开(类似于Gmail)。但我找不到任何教程说明如何这样做。

  • 在Bootstrap 4中,我们已经加了一系列的全局选项,让你能够在项目中轻松定制所有的组件。这些选项通过Sass变量来处理。通过内置的Gruntfile,可以简单改变一个变量的值,并重新编译。 可用的变量 您可以在_variables.scss文件找到这些变量并自定义这些变量。 变量 值 Description $spacer 1rem (默认), 或者任何大于0的值 为间隔工具指定默认的间隔值