• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: Java
  • 标签: webview  Js  

资源简介

WebView与Js的互相调用 已测试通过,H5中的js调用android并传值,Android调用js并传值

资源截图

代码片段和文件信息

package com.example.administrator.myapplication;

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class WebViewJsActivity extends AppCompatActivity {
    private static final int MY_PERMISSIONS_REQUEST_CALL_PHONE = 1;
    private Handler mHandler = new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webviwjs);
// mWebView.loadUrl(“file:///android_asset/test.html“);;
        final WebView mWebView = (WebView) findViewById(R.id.view);
        WebSettings mWebSettings = mWebView.getSettings();
        WebSettings webSettings = mWebView.getSettings();
//设置WebView属性,能够执行javascript脚本
        webSettings.setjavascriptEnabled(true);
//设置可以访问文件
        webSettings.setAllowFileAccess(true);
//设置支持缩放
        webSettings.setBuiltInZoomControls(true);
//加载需要显示的网页
        webSettings.setBlockNetworkImage(false);
        webSettings.setBlockNetworkLoads(false);
        webSettings.setDomStorageEnabled(true);

        //启用javascript
        mWebSettings.setjavascriptEnabled(true);
        //设置编码格式
        mWebSettings.setDefaultTextEncodingName(“utf-8“);
        //mWebView.loadData(“““text/html““UTF-8“);
        //调用本地html文件
        mWebView.loadUrl(“file:///android_asset/test.html“);

        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view String url String message JsResult result) {
                return super.onJsAlert(view url message result);
            }
        });
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view String url) {
                // 如下方案可在非微信内部WebView的H5页面中调出微信支付
                Uri uri = Uri.parse(url);
                // 如果url的协议 = 预先约定的 js 协议
                // 就解析往下解析参数
                if ( uri.getScheme().equals(“js“)) {
                    // 如果 authority  = 预先约定协议里的 webview,即代表都符合约定的协议
                    // 所以拦截url下面JS开始调用Android需要的方法
                    if (uri.getAuthority().equals(“webview“)) {

                        //  步骤3:
                        // 执行JS所需要调用的逻辑
                        System.out.println(“js调用了Android的方法“);
                        // 可以在协议上带有参数并传递到Android上
                      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         539  2017-12-28 21:11  test.html
     文件        4318  2017-12-28 21:47  WebViewJsActivity.java

评论

共有 条评论