android应用中嵌入网页是现在常用的,那么html中如何与android中事件进行绑定呢?
1、提供如下的js代码:
<script type="text/javascript" >
function startActivity() {
android.startActivity();
}
</script>
<script type="text/javascript">
$('#entry_button').on('click',function() {
startActivity();
});
</script>
2、提供调用webview的activty:
package com.lia.webview;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewActivity extends Activity {
private WebView myWebView;
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
myWebView = (WebView) findViewById(R.id.myWebView);
//如果访问的页面中有Javascript,则webview必须设置支持Javascript。
myWebView.getSettings().setJavaScriptEnabled(true);
// 与js交互,JavaScriptinterface 是个接口,与js交互时用到的,这个接口实现了从网页跳到app中的activity 的方法,特别重要
myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");
//网页不在android内置浏览器里,在webView空间中;
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//加载至WebView控件中
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
LogUtil.d("error--->" + error.toString());
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
}
@Override
public void onPageFinished(WebView view, String url) {
//android端调网页中的api
myWebView.loadUrl("javascript:js中对应的方法");
}
});
myWebView.loadUrl("file:///android_asset/index.html");
}
}
本地网页:file:///android_asset/index.html
3、提供与js交互中需要用到的方法:
package com.lia.webview;
import android.app.Activity;
import android.content.Intent;
public class JavaScriptinterface {
Activity mActivity;
public JavaScriptinterface(Activity mActivity) {
this.mActivity = mActivity;
}
/** 与js交互时用到的方法,在js里直接调用的 */
@JavaScriptinterface
public void startActivity() {
//此处响应了js中的startActivity()方法,进行跳转;
Intent intent = new Intent();
intent.setClass(mActivity, MainActvity.class);
mActivity.startActivity(intent);
mActivity.finish();
}
}