android Webview 实现js调用java代码实现Activity跳转

今天有了一个需求,在android里webview加载的html页面,要求点击html页面的按钮实现Activity的跳转。

咱是是菜鸟,webview的接触不多,于是就和度娘来了次亲密接触。在其中也发现了一些问题。现在做个笔记:

首先:

  1. //返回到指定的Activity  
  2.     @JavascriptInterface  
  3.     public void go(final String destActivity) {  
  4.         mHandler.post(new Runnable() {  
  5.             @Override  
  6.             public void run() {  
  7.                 if (TextUtils.isEmpty(destActivity)) {  
  8.                     finish();  
  9.                 } else {  
  10.                         String reqActivity=getPackageName()+"."+destActivity;  
  11.                     try{  
  12.                         Intent checkActivity = new Intent();  
  13.                         checkActivity.setClassName(getPackageName(),reqActivity);  
  14.                         startActivity(checkActivity);  
  15.                         finish();  
  16.                     }catch(Exception e){  
  17.                         Toast.makeText(DetailActivity.this"对不起,跳转页面出现异常", Toast.LENGTH_SHORT).show();  
  18.                     }  
  19.   
  20.   
  21.                 }  
  22.             }  
  23.         });  
  24.     }  
 
 这里@JavascriptInterface 在android4.4之后,必须要加上这个注解,主要是为了解决和js交互产生的安全问题;

mHandler.post();这个是必要的,在UI线程执行

另外,关于Intent的跳转问题,我没有找到很好的途径。所以做了个字符串的拼接reqActivity。有别的好的方法的话,希望能告诉我,不胜感激。

这里要说一下 setCacheMode,清除缓存。解决从js传过来的参数一直都是最初的值。

html

[html] view plaincopy
 
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
  5.     <script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>  
  6.     <title></title>  
  7. </head>  
  8. <body>  
  9.     <input type="button" value="返回安卓的某一个界面" onclick="window.gotoPointedActivity.go('')"/>  
  10.       
  11. </body>  
  12. </html>  
原文地址:https://www.cnblogs.com/liuguanghai/p/4479267.html