Android 打开网页之CustomTabs

一般打开url有以下几种方式:

  • 调用默认浏览器
  • 用WebView
  • 用CustomTabsIntent

默认浏览器的话,是跳转到别的app,我方app就切换到后台了,至于什么时候返回回来就不确定了,且在后台有被回收的风险,不利于业务开展,如果是打开浏览器之后就完成任务的情况,可以使用。

WebView是我们比较常用的,如果页面可控,且需要交互的,还是建议使用webview的。

CustomTabs在用户的默认浏览器中显示网页,相当于在自己的app中用默认浏览器打开网页,效果类似WebView,但使用起来比WebView轻量,也更安全,性能更好。

今天主要说说CustomTabs。

效果:

在这里插入图片描述
这是打开应用宝的一个App下载链接。可以看到加载速度还是很快的,就像打开activity一样。

引入

customtabs其实是browser包下的,browser是jetpack下的,现在统一纳入到androidx。

dependencies {
    implementation "androidx.browser:browser:1.3.0"
}

使用

简单使用的话,只要一行代码

CustomTabsIntent.Builder().build().launchUrl(context, uri)

就这么简单。

上面提到效果图中打开网页像打开activity一样,如果更像呢,主题一直是不是更像了。

定制ui

CustomTabsIntent也支持定制ui

//设置颜色方案
val schemeParams = CustomTabColorSchemeParams.Builder()
                .setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary))
                .setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark))
                .build()
                
CustomTabsIntent.Builder()
                .setDefaultColorSchemeParams(schemeParams)
                .build().launchUrl(context, uri)

CustomTabColorSchemeParams支持

  • toolbarColor
  • secondaryToolbarColor
  • navigationBarColor
  • navigationBarDividerColor

看看效果
在这里插入图片描述

菜单

比如setActionButton

val bitmap = BitmapFactory.decodeResource(this.resources, R.mipmap.ic_setting)
val intent = Intent(context, LoginActivity::class.java)
val activity = PendingIntent.getActivity(context, 0, intent, 0)
//内置启动
CustomTabsIntent.Builder()
    .setActionButton(bitmap, "自定义Action", activity)
    .setDefaultColorSchemeParams(schemeParams)
    .build().launchUrl(context, uri)

这里用PendingIntent指定后续操作,比如打开一个页面或者发送一个广播。
在这里插入图片描述
可以看到右上角多了一个设置的小图标。

除此之外还有很多别的api,比如:

  • addMenuItem(String label, PendingIntent pendingIntent)
  • setCloseButtonIcon(Bitmap icon)
  • setShowTitle(boolean showTitle)
  • 等等

完整代码


    btn_launch.setOnClickListener {
        openWebPage(this, Uri.parse("https://www.baidu.com"))
    }
 
	...

    private fun openWebPage(context: Context, uri: Uri) {
        if (context.isChromeSupported()) {
            //设置颜色方案
            val schemeParams = CustomTabColorSchemeParams.Builder()
                .setToolbarColor(ContextCompat.getColor(context, R.color.colorPrimary))
                .setSecondaryToolbarColor(ContextCompat.getColor(context, R.color.colorPrimaryDark))
                .build()

            val bitmap = BitmapFactory.decodeResource(this.resources, R.mipmap.ic_setting)
            val intent = Intent(context, LoginActivity::class.java)
            val activity = PendingIntent.getActivity(context, 0, intent, 0)

            //内置启动
            CustomTabsIntent.Builder()
                .setActionButton(bitmap, "自定义Action", activity)
                .setDefaultColorSchemeParams(schemeParams)
                .build().launchUrl(context, uri)
        } else {
            //启动默认浏览器
            context.startActivity(Intent(Intent.ACTION_VIEW, uri))
        }
    }

    private fun Context.isChromeSupported(): Boolean {
        val serviceIntent = Intent(CustomTabsService.ACTION_CUSTOM_TABS_CONNECTION)
        serviceIntent.setPackage("com.android.chrome")
        val resolveInfos = packageManager.queryIntentServices(serviceIntent, 0)
        return !resolveInfos.isNullOrEmpty()
    }
感谢
### 回答1: 要在Android Studio中打开网页,可以使用WebView控件。WebView是一个可以在应用程序中显示网页的控件,可以加载HTML、CSS、JavaScript和图像等网页内容。 以下是在Android Studio中打开网页的步骤: 1. 在布局文件中添加WebView控件。 2. 在Java代码中获取WebView控件的引用。 3. 使用WebView控件的loadUrl()方法加载网页。 4. 在AndroidManifest.xml文件中添加Internet权限。 例如,以下代码可以在WebView控件中加载Google网页: 布局文件: ``` <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` Java代码: ``` WebView webView = (WebView) findViewById(R.id.webview); webView.loadUrl("https://www.google.com"); ``` AndroidManifest.xml文件: ``` <uses-permission android:name="android.permission.INTERNET" /> ``` ### 回答2: 在Android Studio中打开网页是一个相对简单的过程。有几种方法可以在应用程序中打开网页,包括在应用程序中使用WebView或将网页链接发送到用户的默认浏览器。下面是一些详细的指导步骤。 1. 使用WebView在应用程序中打开网页。 在您的项目中添加一个WebView组件,您可以通过从菜单中选择“File”->“New”->“XML”->“Layout XML File”来完成这个步骤。您需要为WebView设置布局参数,以便您可以在应用程序的界面上正确地展示它。您可以在onCreate()方法中获取一个WebView组件的引用并打开您需要的网页链接。以下是代码示例。 ``` WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com"); ``` 2. 将网页链接发送到用户的默认浏览器。 如果您想用默认的浏览器打开链接而不是在应用程序中使用WebView,您可以使用以下代码实现。 ``` String url = "http://www.example.com"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); ``` 以上是两种在Android Studio中打开网页的方法。选择使用哪种方案需要根据您的实际需求和应用程序的特点来做决定。 ### 回答3: Android Studio是一个流行的集成开发环境,用于为Android设备编写应用程序。在Android Studio中打开网页可以通过许多方法实现,具体取决于您的需求。 一种方法是使用WebView Widget。WebView是一个内置的类,可在应用程序中嵌入Web内容。使用该类可以在Android Studio中打开网页。要使用此方法,必须在XML布局中添加WebView,并且可以使用以下代码在活动中加载网页: ```java WebView myWebView = findViewById(R.id.webView); myWebView.loadUrl("https://www.example.com"); ``` 另一种使用Intents。Intent是Android系统中的重要组件之一,用于启动Activity或服务。通过创建一个意图并指定URL,可以使用Intent在浏览器中打开网页。以下是启动默认浏览器的例子: ```java String url = "https://www.example.com"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); ``` 如果您想使用特定的浏览器,可以使用以下代码: ```java String url = "https://www.example.com"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setPackage("com.android.chrome"); startActivity(intent); ``` 在这个例子中,我们指定了Chrome浏览器的包名,以确保特定的浏览器得到被启动的优先权。 还有许多其他方法可以在Android Studio中打开网页。例如,您可以使用WebViewClient处理WebView上发生的事件,或使用WebChromeClient处理浏览器控件上发生的事件。无论您选择哪种方法,它们都将让您的应用程序在Android设备上具有更强大的Web浏览能力。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yechaoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值