最近在做项目时,用到了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());就可以显示了。