【Android】内嵌html页面与native代码简单交互
16lz
2022-06-06
0、html页面 label标签设置id
1、js文件中通过document.getElementById("id").innerHTML = str;
给html页面设置值,方法代码
//接收android传递的数据,并显示在html上function AndroidToWeb0(str){ document.getElementById("company").innerHTML = str; alert(str);//通过下面代码去响应这个alert}
用于响应js中的alert
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b2 = new AlertDialog.Builder(PreviewRatifyNoticeActivity.this) .setTitle("提示").setMessage(message) .setPositiveButton("ok", new AlertDialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.confirm(); } }); b2.setCancelable(false); b2.create(); b2.show(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { // TODO Auto-generated method stub return super.onJsConfirm(view, url, message, result); } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,JsPromptResult result) { // TODO Auto-generated method stub return super.onJsPrompt(view, url, message, defaultValue, result); }});
2、获取并配置webview
webView = (WebView) findViewById(R.id.web_view);//设置支持jswebView.getSettings().setJavaScriptEnabled(true);webView.requestFocus();webView.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY); //设置webview的背景色webView.setBackgroundColor(getResources().getColor(R.color.bg_gray));//设置加载网页webView.loadUrl("file:///android_asset/ratify_notice.html");
3、如果加载过html页面文件后就进行传值,那么会传值失败,初步认定是因为虽然发出页面加载请求了,但是很可能页面加载较慢,传值比较快,而导致加载失败。所以可用以下方式,目的是等页面加载完毕再传值
//这样设置是为了防止webview页面未加载完成就调用赋值方法而导致的先赋值后加载页面,//从而导致赋值失败webView.setWebViewClient(new WebViewClient() { // 重写shouldOverrideUrlLoading方法,使点击链接后不使用其他的浏览器打开。 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); // 如果不需要其他对点击链接事件的处理返回true,否则返回false return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); //打开时显示加载框 showProgressDialog("get"); } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); //加载完成关闭加载框 webView.post(new Runnable() { @Override public void run() { webView.loadUrl("javascript:AndroidToWeb0('" + 要传的值 + "')"); } }); hideProgressDialog(); }});
更多相关文章
- Android中Dialog的使用
- Manifest中Activity的一些配置
- Android(安卓)WebView调用Js设置byte[]给Img src
- WebView 键盘遮挡输入框解决方案
- Android(安卓)NDK开发动态加载so示例源码
- Android设置透明、半透明等效果
- 设置屏幕显示模式ScreenOrientation.
- Android中如何获得一些系统设置和环境变量?
- Android设置View的margin