JCEF实现唤醒系统默认浏览器弹窗

前言

        今天接到了一个需求,新版本提示的下载新版本希望唤醒本地浏览器,而不是由JCEF生成一个弹窗,leader说不好看......;

过程

        1.GPT

代码具体如下

public class RequestHandler extends CefRequestHandlerAdapter {

    private final String[] filterRequest = { "xxxx" };

    @Override
    public boolean onBeforeBrowse(CefBrowser browser, CefFrame frame, CefRequest request, boolean user_gesture, boolean is_redirect) {
        String url = request.getURL();
        try {
            for (String target : filterRequest) {
                if (url.equals(target)) {
                    if (Desktop.isDesktopSupported()) {
                        Desktop.getDesktop().browse(new URI(url));//唤醒系统默认浏览器
                        return true;
                    }
                }
            }
        } catch (Exception e) {
            return super.onBeforeBrowse(browser, frame, request, user_gesture, is_redirect);
        }
        return super.onBeforeBrowse(browser, frame, request, user_gesture, is_redirect);
    }
}

结果显而易见,失败了;后面查看文档(文档地址:CEF3 Java API Docs)发现,这个handler并不是特别符号我的需求;

他是在导航之前进行处理,自我感觉时机晚了;

2.查文档

        通过翻看文档中其他的handler,还真的找到了一个很符号我需求的handler(CefLifeSpanHandler)

查看详情

这不是正是我想要的吗;

修改代码

编写handlerAdapter:

public class LifeSpanHandler extends CefLifeSpanHandlerAdapter {

    @Override
    public boolean onBeforePopup(CefBrowser browser, CefFrame frame, String target_url, String target_frame_name) {
        try {
            if (BuildInfo.PRODUCT_HOME.equalsIgnoreCase(target_url)) {
                Desktop.getDesktop().browse(new URI(target_url));
                return true;
            }
            return false;
        } catch (Exception e) {
            return true;
        }
    }
}

将该handler注册到cefClient中:

 

//前面是一些业务代码,不太好展示
CefClient cefClient = cefApp.createClient();//创建cefClient实例
cefClient.addLifeSpanHandler(new LifeSpanHandler());//注册刚刚创建的那个handler

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值