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>

更多相关文章

  1. android休眠与唤醒驱动流程分析
  2. 打开android默认浏览器
  3. android调用系统通讯录
  4. Timer实现倒计时
  5. android练习一之简易浏览器
  6. android 调用图库并显示选择的图片
  7. Android(安卓)AES加密工具类,解决只能加密不能解密问题
  8. 分享一个两个Android(安卓)scrollView同时滚动的方法
  9. Android(安卓)调用.NET webservice

随机推荐

  1. ViewPage固定每页加载的数量。进行翻页
  2. android 自定义view实现图形移动
  3. (ios实战)实现类似于android 的toast控件
  4. android输入法问题
  5. 你需要了解下Android(安卓)View的更新req
  6. android 播放器合集打包(源码来源网络)
  7. Android的Linux内核的电源管理:概述
  8. [置顶] Android(安卓)WebView 踩过的坑
  9. android radioButton 改变圆圈大小
  10. 使用Appium进行微信公众号自动化测试