Android中的Java与JavaScript方法互调
16lz
2021-01-26
在Android开发中常常用到WebView,就会涉及到安卓的java代码和网页中的javaScript方法的相互调用.
准备工作
最基本的要得到WebView对象
@Bind(R.id.webview) WebView webview; WebView webview= (WebView) findViewById(R.id.webview);
两种方法
- 使用ButterKnife插件 注解
- 普通findViewById
设置默认的文本编码方式为utf-8
webview.getSettings().setDefaultTextEncodingName("utf-8");
允许执行js代码
webview.getSettings().setJavaScriptEnabled(true);
Java代码去调用JavaScript中的方法
网页中的JavaScript代码
<script type="text/javascript"> function changeInputValue(content){ document.getElementById("put_id").value=content; }script>
比如我们想在java代码去调用网页中changeInputValue这个方法
webview.loadUrl("javascript:changeInputValue('我是参数')");
webView调用loadUrl方法,值是一个字符串写法: javascript: + JavaScript中的方法名('参数');
HTML(网页)代码去调用Java中的方法
java中代码:
webview.addJavascriptInterface(new JavaScriptInterface(),"AndroidMethod");class JavaScriptInterface{ @JavascriptInterface public void showToast(String content){ Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show(); } }
使用webview调用addJavascriptInterface方法,给网页一个方法"接口"类 两个参数 1."接口"类 对象 直接new出来 2. 起个名字给JavaScript调用使用写一个方法"接口"类在类中写方法 低版本在方法上不用写注解就可以 高版本一定要写上注解,不然无法调用
JavaScript 中代码
<script type="text/javascript"> function showAndroidMethod(content) { AndroidMethod.showToast(content); }script>
在JavaScript写一个方法 方法中直接刚才在java代码中定义的名字 调用"接口"类中的方法
更多相关文章
- Android(安卓)ViewPager 的使用
- Android(安卓)Activity之间跳转总结
- android baseadapter的getview调用两次
- ArcGIS for Android示例解析之GP服务调用-----ViewShed
- Android(安卓)Studio 添加已有工程方法
- Android(安卓)NestedScrolling机制
- Android音频系统之AudioFlinger(二)
- Android仿淘宝列表和网格布局切换
- Android-代替GLSurfaceView的GLTextureView