今天有了一個需求,在android里webview加載的html頁面,要求點擊html頁面的按鈕實現Activity的跳轉。
咱是是菜鳥,webview的接觸不多,於是就和度娘來了次親密接觸。在其中也發現了一些問題。現在做個筆記:
首先:
- //返回到指定的Activity
- @JavascriptInterface
- public void go(final String destActivity) {
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- if (TextUtils.isEmpty(destActivity)) {
- finish();
- } else {
- String reqActivity=getPackageName()+"."+destActivity;
- try{
- Intent checkActivity = new Intent();
- checkActivity.setClassName(getPackageName(),reqActivity);
- startActivity(checkActivity);
- finish();
- }catch(Exception e){
- Toast.makeText(DetailActivity.this, "對不起,跳轉頁面出現異常", Toast.LENGTH_SHORT).show();
- }
- }
- }
- });
- }
這里@JavascriptInterface 在android4.4之后,必須要加上這個注解,主要是為了解決和js交互產生的安全問題;
mHandler.post();這個是必要的,在UI線程執行
另外,關於Intent的跳轉問題,我沒有找到很好的途徑。所以做了個字符串的拼接reqActivity。有別的好的方法的話,希望能告訴我,不勝感激。
這里要說一下 setCacheMode,清除緩存。解決從js傳過來的參數一直都是最初的值。
html
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>
- <title></title>
- </head>
- <body>
- <input type="button" value="返回安卓的某一個界面" onclick="window.gotoPointedActivity.go('')"/>
- </body>
- </html>