webview与h5交互
16lz
2021-01-23
android webview与H5的交互 方法无响应
@SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" }) protected void onStart() { // TODO Auto-generated method stub super.onStart(); webView = (WebView) findViewById(R.id.webView); String url = getIntent().getStringExtra("urlPath"); WebSettings webSettings = webView.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // WebView加载web资源 webView.loadUrl(url); // 从assets目录下面的加载html // webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.addJavascriptInterface(this, "javatojs"); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 view.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // 重写此方法可以让webview处理https请求。 super.onReceivedSslError(view, handler, error); handler.proceed(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // 在页面加载开始时调用。 super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { // 在页面加载结束时调用。 super.onPageFinished(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // TODO Auto-generated method stub super.onReceivedError(view, errorCode, description, failingUrl); webView.setVisibility(View.GONE); // 返回 ImageView backView = (ImageView) findViewById(R.id.iv_licaike_back); backView.setVisibility(View.VISIBLE); backView.setOnClickListener(WebViewActivity.this); } @Override public void onLoadResource(WebView view, String url) { // 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。 super.onLoadResource(view, url); } }); // 主要处理解析,渲染网页等浏览器做的事情 辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { setTitle(title); } }); }@JavascriptInterface // 这个最好每个H5调用都加,否则有些机型和版本不支持 public void reqDataFromApp() { webView.loadUrl("javascript:getDataToH5('" + "toStr" + "')"); }html调用javascript:javatojs.reqDataFromApp();
function
getDataToH5(toStr){}
更多相关文章
- Android获取浏览器User Agent
- 判断微信内置浏览器, 其他浏览器
- Android自制浏览器WebView-android学习之旅(64)
- [置顶] android中OnScrollListener的详解(Listview分批加载用到)
- android 页面带值跳转
- Android完整的Fragment页面
- Android: VideoView做背景仿常见APP登录动态页面