首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用CustomTabsIntent启动webview后显示AlertDialog

是一种在Android应用中打开网页并在网页加载完成后显示一个对话框的方法。

CustomTabsIntent是Android提供的一个API,用于在应用中打开网页。它提供了一种无缝的用户体验,可以在应用内部打开网页,而不需要跳转到系统默认的浏览器应用。使用CustomTabsIntent可以实现更加自定义的网页打开方式,包括自定义工具栏、动画效果等。

要在使用CustomTabsIntent启动webview后显示AlertDialog,可以按照以下步骤进行操作:

  1. 导入相关的依赖库:在项目的build.gradle文件中添加以下依赖:
代码语言:txt
复制
implementation 'androidx.browser:browser:1.3.0'
  1. 创建一个CustomTabsIntent对象:可以使用CustomTabsIntent.Builder来创建一个CustomTabsIntent对象,并设置一些自定义的属性,如工具栏颜色、动画效果等。
  2. 启动webview:使用CustomTabsIntent对象的launchUrl方法启动webview,并传入要打开的网页URL。
  3. 监听网页加载完成事件:可以使用CustomTabsIntent对象的setOnNavigationEvent方法来监听网页加载完成事件。
  4. 显示AlertDialog:在网页加载完成事件中,可以弹出一个AlertDialog来显示对话框内容。

以下是一个示例代码:

代码语言:txt
复制
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.browser.customtabs.CustomTabsIntent;

public class MainActivity extends AppCompatActivity {

    private CustomTabsIntent customTabsIntent;

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

        // 创建CustomTabsIntent对象
        customTabsIntent = new CustomTabsIntent.Builder().build();

        // 启动webview
        Uri uri = Uri.parse("https://www.example.com");
        customTabsIntent.launchUrl(this, uri);

        // 监听网页加载完成事件
        customTabsIntent.setOnNavigationEvent(new CustomTabsIntent.OnNavigationEventHandler() {
            @Override
            public boolean onNavigationEvent(int navigationEvent, Bundle extras) {
                if (navigationEvent == CustomTabsIntent.NAVIGATION_FINISHED) {
                    // 网页加载完成,显示AlertDialog
                    showAlertDialog();
                }
                return false;
            }
        });
    }

    private void showAlertDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("网页加载完成");
        builder.setMessage("网页加载完成,是否关闭网页?");
        builder.setPositiveButton("关闭", (dialog, which) -> {
            // 关闭网页
            finish();
        });
        builder.setNegativeButton("取消", (dialog, which) -> {
            // 取消操作
            Toast.makeText(MainActivity.this, "取消关闭网页", Toast.LENGTH_SHORT).show();
        });
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }
}

在上述示例代码中,我们使用CustomTabsIntent启动了一个webview,并在网页加载完成后显示了一个AlertDialog。在网页加载完成事件中,我们创建了一个AlertDialog,并设置了标题、消息和按钮的点击事件。

这种方法可以在应用中实现在webview加载完成后显示一个对话框的需求。对于更多关于CustomTabsIntent的详细信息,可以参考腾讯云的相关文档和示例代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 打开网页之CustomTabs

一般打开url有以下几种方式: 调用默认浏览器 用WebViewCustomTabsIntent 默认浏览器的话,是跳转到别的app,我方app就切换到后台了,至于什么时候返回回来就不确定了,且在后台有被回收的风险...,不利于业务开展,如果是打开浏览器之后就完成任务的情况,可以使用。...WebView是我们比较常用的,如果页面可控,且需要交互的,还是建议使用webview的。...CustomTabs在用户的默认浏览器中显示网页,相当于在自己的app中用默认浏览器打开网页,效果类似WebView,但使用起来比WebView轻量,也更安全,性能更好。...dependencies { implementation "androidx.browser:browser:1.3.0" } 使用 简单使用的话,只要一行代码 CustomTabsIntent.Builder

1.5K20

Android适配使用webview加载后图片显示过大的问题

最近在开发过程中,需要用webview控件来展示文章的详情页面,流程是通过请求后台数据,然后用控件加载,而后台返回的文章详情页面是直接网页端使用的,并没有对移动端进行适配,导致webview加载后文章详情展示的图片过大...先来看看没有做适配之前的效果: [fc9cktum2x.png] 在这里插入图片描述 我们可以看到加载的文章详情中的图片只显示了一部分。...下面来看看解决方案: webview的基本使用流程这里我就不重复说明了,本篇针对的是文章详情加载完成出现的情况,这里我们使用的方法是:通过js脚本,重置img标签中图片的宽度和高度。...使用步骤: 1、此方法需要使用js,所以webview设置属性中一定要添加下面这句,不然无效。...,流程是加载完页面,重置img标签中图片的宽度和高度,到这里就完成了。

2K20

安卓开发_关于WebView加载页面空白问题

依据我自己的测试,发现有时候用APP打开网页的时候,有的网页加载成功之前需要很久,有的一下就出来了(比如百度) 当加载时间过长的情况下,这时候显示的是空白界面,其实不是代码问题,只是要打开的这个网页太大了...首先,想到的就是提示框 具体操作呢 package com.example.qunxiong; import android.app.Activity; import android.app.AlertDialog...= (WebView)findViewById(R.id.webview);//这里是layout中WebView控件的Id WebSettings settings = webview.getSettings...); final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); progressBar...alertDialog.setMessage(description); alertDialog.setButton("OK", new DialogInterface.OnClickListener

3.8K70

安卓应用安全指南 4.9 使用`WebView`

(1)如果应用使用内部管理的内容,则可以启用 JavaScript。 (2)除上述情况外,你不应启用 JavaScript。 图 4.9-1 显示了根据内容特征选择示例代码的流程图。...以下示例代码展示了,如何使用WebView显示存储在assets/和res/下的内容。 要点: 1) 禁止访问文件(apk 文件中的assets/和res/下的文件除外)。...因为存在用恶意 JavaScript 显示恶意网页的潜在风险。 “4.9.1.2 仅显示内部管理的内容”部分中的示例代码,使用固定值 URL 显示内部管理的内容来确保安全。...如果你需要显示从意图收到的 URL,则必须确认该 URL 在内部管理的 URL 中。 简而言之,应用必须使用正则表达式等白名单来检查 URL。另外,它应该是 HTTPS。...因此,在使用WebView进行 Web 消息传递时,最好在postWebMessage()方法中明确指定特定的源。

1K10

EasyCVR启动显示版本号及服务信息调试及优化

TSINGSEE青犀视频开发视频流媒体软件至今,很多产品都经过了多次的更新,每次正式上线前我们都会在内部做几次全面测试,包括系统运行、视频播放、不同协议的对接、第三方平台的对接、前端显示等方面。...在我们最新的测试中,我们发现EasyCVR启动显示版本号及服务信息: image.png 排查发现内核返回的时间有时间小数点后为两位,或者三位导致的。...image.png 软件默认只需要取到秒就可以,过滤内核启动时间去掉小数点。...image.png 调试再次进行预览: image.png EasyCVR的功能正在逐步完善,目前作为视频智能分析平台,在人脸识别和车牌识别领域也有了比较完善的研发成果,并且对于新需求的展现也在不断推进研发当中

29120

使用diskgenius,explorer里面显示了EFI启动引导分区(ESP)盘符,但是执行diskpart命令list volume不显示盘符,如何解决

EFI系统分区(ESP)是一个使用FAT或FAT32格式的小分区 打开explorer,里面显示了EFI启动引导分区的盘符,但是执行diskpart命令list volume又不显示盘符,如何解决?...如果 EFI 系统分区在资源管理器中显示了盘符,但在 diskpart 的list volume中没有显示,这可能是由于磁盘管理缓存不同步导致的。...请尝试以下方法来解决这个问题: 1、我是用了disk genius出现这种情况的,在diskgenius里似乎找不到解决方案,它给你弄出来了,但是弄不掉 图片 图片 图片 2、试过diskpart命令.../tree/master 纯cpp代码,需要自己编译,我一开始下载成作者2015年的代码了,执行,mount参数会自动给ESP分区分配新盘符,但是umount参数不起作用,导致ESP分区出现了更多的盘符...图片 后来我下载了作者2022年的代码,在vs2022里编译,mount参数和unmount参数都起作用了,牛逼!!!

1.2K100

Android开发笔记(六十四)网页加载与JS调用

内置浏览器 网页视图WebView 如果一个网站已经有现成的网页及业务逻辑,那么使用WebView将其内嵌到app中,省去了app重画页面与http通信的事情,无疑是更经济的做法。...LOAD_CACHE_ELSE_NETWORK表示优先使用缓存,LOAD_NO_CACHE表示不使用缓存,LOAD_CACHE_ONLY表示只使用缓存。...要想动态显示当前页面的加载百分比,可在WebChromeClient的onProgressChanged方法中设置进度对话框的当前进度。 3、显示js的提示对话框。...默认情况下,js对话框也能正常显示和操作,只是对话框标题默认为“网址为"***"的网页显示”,这个标题信息不够友好,所以我们需要重写WebChromeClient的三个js方法onJsAlert、onJsConfirm...代码示例 下面是WebView使用的代码例子: import android.annotation.SuppressLint; import android.app.Activity; import

6.3K10

Android开发笔记(一百五十一)WebView与JavaScript交互的四种形式

Android4.4之后才支持该功能", Toast.LENGTH_SHORT).show(); } 该行为的执行效果如下图所示,App通知JS调用getMsgFromWeb方法,获得返回消息再由...Web通知App执行某项动作 App需要定义一个专门给JS使用的类,并在该类中实现JS要调用的方法,具体的类代码如下所示: private final class Client { @JavascriptInterface...重写的方法代码如下所示: public boolean onJsAlert(WebView view, String url, String message, final JsResult result...} }); //setCancelable要设置为false,点击对话框外部时不让关闭对话框 //不然JsResult的confirm方法没有得到执行,网页上的其它控件就不可使用...JS调用App方法,返回值中的中文是正常;但App获取JS方法,返回值的中文却是“\u”打头的字符串,所以要先将JS返回的字符串做转义处理,转义的字符串才是App能够处理的正常汉字。 5.

1.2K10

安卓开发_关于WebView使用链接时调用浏览器显示的问题

在我们的实际开发中,我们用到WebView就是为了在自己的APP中的某个部分来显示指定网页的效果。...但是在学习的过程中,我发现一个问题: 有的网页使用WebView控件显示出来以后,再点击网页中的某个链接,进入到下一个网页,它没有在APP中继续显示,而是要在手机浏览器中显示网址,这显示没有了良好的人机交互体验...(PS:这个问题有的网页是不出现的,本人没有大量测试,估计是我在Fragment中使用WebView的原因,在Activity中就没有这个问题,不管怎么样,加上相应的代码就可以了) 下面来看代码 1...= (WebView) view.findViewById(R.id.webview); 28 WebSettings settings = webview.getSettings()...stub 6 view.loadUrl(url); 7 return true; 8 } 9 } 加上之后,就不会出现在浏览器中显示网页的问题了

1.4K150

11.webview、shareSDK

private int mCurrentChooseItem;// 记录当前选中的item, 点击确定前 private int mCurrentItem = 2;// 记录当前选中的item, 点击确定,...默认是标准字体,有个问题:在进来又变回了标准,可以保存起来 /** * 显示选择对话框 */ private void showChooseDialog() { AlertDialog.Builder...builder = new AlertDialog.Builder(this); String[] items = new String[] { "超大号字体", "大号字体", "正常字体", "...// site是分享此内容的网站名称,仅在QQ空间使用 oks.setSite(getString(R.string.app_name)); // siteUrl是分享此内容的网站地址,仅在QQ空间使用...oks.setSiteUrl("http://sharesdk.cn"); // 启动分享GUI oks.show(this); }} 导入的时候遇到了错误,我把工作空间改了成utf-8,但是有一个文件还是报错

91360

11.webview、shareSDK

private int mCurrentChooseItem;// 记录当前选中的item, 点击确定前 private int mCurrentItem = 2;// 记录当前选中的item, 点击确定,...默认是标准字体,有个问题:在进来又变回了标准,可以保存起来 /** * 显示选择对话框 */ private void showChooseDialog() { AlertDialog.Builder...builder = new AlertDialog.Builder(this); String[] items = new String[] { "超大号字体", "大号字体", "正常字体", "...// site是分享此内容的网站名称,仅在QQ空间使用 oks.setSite(getString(R.string.app_name)); // siteUrl是分享此内容的网站地址,仅在QQ空间使用...oks.setSiteUrl("http://sharesdk.cn"); // 启动分享GUI oks.show(this); }} 导入的时候遇到了错误,我把工作空间改了成utf-8,但是有一个文件还是报错

45020

webview添加参数与修改请求头的user-agent实例

这篇博文记录解决方案: 正常使用 按照正常程序走的话,我们使用 webView.loadUrl(url); 这样就可以解决平时之间访问一个网页的需求。...总结:此方法不适合所有登录页面都需要判断登录状态的h5 添加请求头 在加载h5的时候添加请求头 在度娘上有很多都是直接使用webView.loadUrl(url,header);直接添加请求头(header...而webview中也刚好提供了方法进行user-agent的设置,具体使用下面再进行介绍。在请求头里的作用可自行百度。 解决了身份的判断了,就剩下解决退出登录的通知了。...在这里,我们可以处理重定向,变成我们需要显示的效果,具体的使用可就不详细介绍了。主要是shouldOverrideUrlLoading()方法的使用介绍。...在此,我们已服务端协商,在token失效,给我们返回跟接口一样的json字符串,如果是处于登录失效的时候,我们使用connection.getInputStream()获取的就是一串json字符串,因为

4.2K10
领券