Android的webView和h5+js交互

现在开发越来越多的遇到Android本地代码和h5和js交互,于是写了个小demo记录一下,效果图如下:

Android的webView和h5+js交互_第1张图片

上面图里里面的上面包括返回都是一个webView,底面的Android按钮是一个button。
布局文件如下:

<?xml version="1.0" encoding="utf-8"?>

mainactivitty代码如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private WebView mWebView;    private Button mButton;    private WebAppInterface mAppInterface;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mWebView = (WebView) findViewById(R.id.wb);        mButton = (Button) findViewById(R.id.button);        mButton.setOnClickListener(this);        mAppInterface = new WebAppInterface(this);        initWeb();    }    private void initWeb() {        mWebView.loadUrl("file:///android_asset/index.html");//加载本地的html        WebSettings settings = mWebView.getSettings();//获取WebSettings对象,利用WebSettings配置WebView        settings.setJavaScriptEnabled(true);//设置允许执行JS脚本        mWebView.addJavascriptInterface(mAppInterface,"app");//添加HTML与AAndroid的通讯接口    }    @Override    public void onClick(View v) {        if(v.getId() == R.id.button){            mAppInterface.showName("测试成功");        }    }    class WebAppInterface{        private Context context;        public WebAppInterface(Context context) {            this.context = context;        }        //-----------下面是JS调用安卓的的方法        @JavascriptInterface        public void sayHello(String name){            if (name.equals("")){                Toast.makeText(context,"还没点本地按钮", Toast.LENGTH_SHORT).show();            }else {                Toast.makeText(context,name, Toast.LENGTH_SHORT).show();            }        }        @JavascriptInterface        public void back(){            Toast.makeText(context,"点击了h5的返回按钮", Toast.LENGTH_SHORT).show();        }        //--------------下面是安卓调用js的的方法        @JavascriptInterface        public void showName(final String name){            runOnUiThread(new Runnable() {//Android更新UI需要在主线程                @Override                public void run() {                    mWebView.loadUrl("javascript:showName('"+name+"')");                }            });        }    }}

上面的代码都有注释,总结一下就是:

1.注册一个和js交互的接口new WebAppInterface(this);

2.要设置webView的mWebView.getSettings()。settings.setJavaScriptEnabled(true),允许加载js脚本。

3.mWebView.addJavascriptInterface(mAppInterface,”app”),添加HTML与Android的通讯接口,app要和html里面调用的保持一致。

4.然后就可以在html写js方法调用或者在Android里面写方法调用js。

到现在为止我们就实现了Android和h5,js交互了 ##

下面是html,我放在了本地asset里面。

                HTML 测试                

H5和js交互

Demo下载

更多相关文章

  1. Android禁止横竖屏和解决切换屏幕时重启Activity的方法
  2. Android官方DrawerLayout 抽屉式侧滑菜单-简单使用方法
  3. Android Emulator 模拟器使用方法
  4. Android心得4.3--SQLite数据库--execSQL()和rawQuery()方法
  5. Android之ContextMenu的使用方法以及与OptionMenu的区别
  6. Android 摇一摇太灵敏的解决方法
  7. android 单选按钮组的使用
  8. Android加载Html的方法
  9. android window的requestWindowFeature()的使用方法

随机推荐

  1. android R文件生成错误
  2. Android调用拨号按钮CALL_BUTTON
  3. google apis 下载
  4. Android 获取屏幕尺寸与密度
  5. Android对话框图片全屏
  6. Android之解析JSON数据示例(android原生态
  7. android 创建动态View
  8. Android 实现文件(图片)上传
  9. android bugly使用
  10. android 使用DataBinding问题总结