黑马程序员技术交流社区
标题:
webview加载html5网页访问android 代码
[打印本页]
作者:
工善器
时间:
2016-3-20 20:31
标题:
webview加载html5网页访问android 代码
学生:
老师我工作中遇到了一个这样的问题(很多出去面试的同学也遇到这个问题),假设我webview加载了一个html5网页,这时候网页上面有一个button,我点击button后让他进入一个银联支付的界面。怎么搞。
回答:
怎么搞。首先我们分析这个问题,这个问题的核心是webview加载的网页里面如何访问android代码。其他的html5,都是用来唬人的,至于银联的界面,那个是陪衬,不是问题所在
那么如何访问呢:首先我们应该给部门的人沟通,让网页前端的人写一个java方法的回调。具体这个回调怎么写,非常简单,因为不涉及android技术,不在这里详解,你告诉网页前端后,网页知道怎么写。
然后你在自己的webview里面写如下代码:
package com.testwebview;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private WebView mWebView;
private Button androidCallJSBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
private void initView() {
mWebView = (WebView) findViewById(R.id.webview);
WebSettings mWebSettings = mWebView.getSettings();
mWebSettings.setJavaScriptEnabled(true); //加上这句话才能使用javascript方法
mWebView.addJavascriptInterface(new Object() {//增加接口方法,让html页面调用
public void callJavaMethod() {
Toast.makeText(getApplicationContext(), "JS调用Android成功", Toast.LENGTH_LONG).show();
}
}, "demo");
mWebView.loadUrl("file:///android_asset/demo.html"); //加载页面
androidCallJSBtn = (Button) findViewById(R.id.androidCallJSBtn);
androidCallJSBtn.setOnClickListener(new Button.OnClickListener() { //给button添加事件响应,执行JavaScript的fillContent()方法
public void onClick(View v) {
mWebView.loadUrl("javascript:callJavaScriptMethod()");
}
});
}
}
复制代码
具体代码看我的附件,运行在手机上面即可
TestWebView.rar
2016-3-20 20:31 上传
点击文件名下载附件
482.16 KB, 下载次数: 112
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2