android JS 互相调用
2016-04-19 16:02
435 查看
public class SystemWebView extends Activity { Button button; WebView webView ; WebSettings webSetting; @JavascriptInterface @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_system_webview); button = (Button)findViewById(R.id.button); webView = (WebView)findViewById(R.id.webView); //加载网页 webView.loadUrl("file:///android_asset/hello.html"); WebSettings settings = webView.getSettings(); settings.setDefaultTextEncodingName("GBK");//设置字符编码 settings.setJavaScriptEnabled(true); //网页是否允许JS运行 //给js window 添加子节点,方便js调用android 方法,子节点名为JsCallAndroid webView.addJavascriptInterface(new JSCallAndroid(), "JsCallAndroid"); //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub //对网页中超链接的打开,返回值是true的时候控制用WebView打开,为false调用系统浏览器或第三方浏览器 view.loadUrl(url); return true; } }); webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { // TODO Auto-generated method stub return super.onJsAlert(view, url, message, result); } }); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { webView.loadUrl("javascript: showFromHtml2('android said:')"); } }); } class JSCallAndroid{ @JavascriptInterface public void htmlCallAndroid(){ Uri smsToUri = Uri.parse("smsto:"); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); intent.putExtra("sms_body", "网页使用发短信"); startActivity(intent); } @JavascriptInterface public String htmlCallAndroid2(final String str){ Gson gson = new Gson(); JSONObject jsonObject = null; try { jsonObject = new JSONObject(str); String name = jsonObject.getString("name"); String password = jsonObject.getString("password"); return "{\"name\":" + name + " turn," + "\"password\":"+ password + " turn}"; } catch (JSONException e) { e.printStackTrace(); } return null; } } }
html 网页
<!doctype html> <html lang="en"> <head> <meta charset="GBK"> <title>Document</title> <script> function showFromHtml2(param){ alert(param + "我调用"); } function subInput(){ var name = document.getElementById("name").value; var password = document.getElementById("password").value; var str = '{"name":"' + name + '","password":"' + password +'"}'; //调用android 的方法 var str2 = window.JsCallAndroid.htmlCallAndroid2(str); alert(str2); } function sendMsg(){ //调用android的方法 window.JsCallAndroid.htmlCallAndroid(); } </script> </head> <body> <form> 用户名:<input id="name" type="email" name="email"/> <br/> 密码: <input id="password" type="text" name="password"/> </br> <input type="submit" value="提交" onclick="subInput()"/> <input type="button" value="调用发短信页面" onclick="sendMsg()"/> </form> </body> </html>
相关文章推荐
- 关于androidstudio创建新项目之后
- Android基础--MediaRecorder类实现视频录制
- Android中使用BitmapShader类来制作各种图片的圆角
- Android 多进程基础
- android画虚线后是实线
- Android签名打包报错
- Android平台,利用zxing库开发扫码功能
- [置顶] Android开发之设置应用设置全屏的两种解决方法 兼容android5.0等两种解决方法
- Android练习项目 Mp3播放器实现(二)
- Android 环境下编译FFmpeg
- 【Android】输入框控件EditText
- android加载大量图片内存溢出的三种解决办法
- Android中判断SD卡状态
- Android访问WEBAPI,传递json
- Android studio 百度地图开发(7)overlayManager、overlayutil应用
- Android Studio制作library(图解)
- Android中启动第三方程序的代码
- android 菜单
- android 动态设置listview gridview高度
- Android 悬浮视图