您的位置:首页 > 移动开发 > Android开发

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: