A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 工善器 高级黑马   /  2016-3-20 20:31  /  3463 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
学生:老师我工作中遇到了一个这样的问题(很多出去面试的同学也遇到这个问题),假设我webview加载了一个html5网页,这时候网页上面有一个button,我点击button后让他进入一个银联支付的界面。怎么搞。
回答:怎么搞。首先我们分析这个问题,这个问题的核心是webview加载的网页里面如何访问android代码。其他的html5,都是用来唬人的,至于银联的界面,那个是陪衬,不是问题所在
那么如何访问呢:首先我们应该给部门的人沟通,让网页前端的人写一个java方法的回调。具体这个回调怎么写,非常简单,因为不涉及android技术,不在这里详解,你告诉网页前端后,网页知道怎么写。
然后你在自己的webview里面写如下代码:
  1. package com.testwebview;
  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.webkit.WebSettings;
  7. import android.webkit.WebView;
  8. import android.widget.Button;
  9. import android.widget.Toast;
  10. public class MainActivity extends Activity {
  11.          private WebView mWebView;  
  12.          private Button androidCallJSBtn;
  13.          
  14.         @Override
  15.         protected void onCreate(Bundle savedInstanceState) {
  16.                 super.onCreate(savedInstanceState);
  17.                 setContentView(R.layout.activity_main);
  18.                 initView();
  19.         }
  20.     @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
  21.         private void initView() {
  22.             
  23.         mWebView = (WebView) findViewById(R.id.webview);  
  24.         WebSettings mWebSettings = mWebView.getSettings();  
  25.       
  26.         mWebSettings.setJavaScriptEnabled(true);   //加上这句话才能使用javascript方法  
  27.         mWebView.addJavascriptInterface(new Object() {//增加接口方法,让html页面调用  
  28.                 public void callJavaMethod() {  
  29.                Toast.makeText(getApplicationContext(), "JS调用Android成功", Toast.LENGTH_LONG).show();
  30.             }  
  31.                
  32.         }, "demo");  
  33.         mWebView.loadUrl("file:///android_asset/demo.html");  //加载页面  
  34.         
  35.         androidCallJSBtn = (Button) findViewById(R.id.androidCallJSBtn);  
  36.         androidCallJSBtn.setOnClickListener(new Button.OnClickListener() {  //给button添加事件响应,执行JavaScript的fillContent()方法
  37.             public void onClick(View v) {  
  38.                 mWebView.loadUrl("javascript:callJavaScriptMethod()");  
  39.             }  
  40.         });  
  41.     }  
  42. }
复制代码

具体代码看我的附件,运行在手机上面即可

TestWebView.rar

482.16 KB, 下载次数: 84

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马