WebView和加载html页面时无法调用alert的解决办法

最近在做项目时,用到了webview 加载h5,调试时需要通过 alert来检测获取的数据的正确性,开始怎么弄alert在android 手机上就是不出来,后面才解决。现将demo放上,

一般通过webview 加载 html 页面时代码是这么写的

public class JSWebviewFragment extends BaseFragment {
    @Override
    public String getTAG() {
        return "JSWebviewFragment";
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        WebView webView = new WebView(getActivity());
        webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webView.setWebViewClient(new WebViewClient()); // ******
        webView.addJavascriptInterface(this, "jswebview");
        webView.loadUrl("file:///android_asset/test.html");
        return webView;
    }

    @JavascriptInterface
    public void androidMethod(String txt) {
        showToastShort(txt);
        LogUtils.d(txt);
    }
}
这样可以正常的和H5中js交互(本地、服务器一样),但是通过alert来调试数据时,一直没有作用。

通过查API,知道 有个setWebChromeClient的方法,官方解释为Sets the chrome handler. This is an implementation of WebChromeClient for use in handling JavaScript dialogs, favicons, titles, and the progress.This will replace the current handler. 大体意思是这个方法是来处理 javascript 方法中的对话框,收藏夹,标题和进度条之类的。

我所要用的alert刚好属于 dialogs 一类。

将代码中“*****”

webView.setWebChromeClient(new WebChromeClient());
就可以显示了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值