Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android browser 的幾個小feature (三) wtai類型url的處理

android browser 的幾個小feature (三) wtai類型url的處理

編輯:關於Android編程

#############################################

本文為極度寒冰原創,轉載請注明出處 #############################################
在一些手機上,url的地址欄上面輸入wtai://wp/mc;10086就會自動跳轉到撥打10086的界面。 輸入wtai://wp/mc;10010就會進入到撥打10010的界面。 這種功能是怎麼實現的呢?自己也進行了一定的研究。
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index daeb1de..6bec737 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -172,12 +172,13 @@ public class NavigationBarBase extends LinearLayout implements
             boolean wap2estore = SystemProperties.getBoolean(
                     "persist.env.browser.wap2estore", false);
             if ((wap2estore && isEstoreTypeUrl(text))
+                || isWtaiTypeUrl(text)) {
                 url = text;
             } else {
                 url = UrlUtils.smartUrlFilter(text, false);
             }
-
             Tab t = mBaseUi.getActiveTab();
             // Only shortcut javascript URIs for now, as there is special
             // logic in UrlHandler for other schemas
@@ -199,7 +200,19 @@ public class NavigationBarBase extends LinearLayout implements
                     return;
                 }
             }

+            Log.e(TAG,"bar url = " + url);
+            if (url != null && t != null && isWtaiTypeUrl(url))
+            {
+                if(handleWtaiTypeUrl(url))
+                {
+                    return;
+                }
+            }
         }
+
         Intent i = new Intent();
         String action = Intent.ACTION_SEARCH;
         i.setAction(action);
@@ -256,6 +269,21 @@ public class NavigationBarBase extends LinearLayout implements
         }
     }
 
+    private boolean isWtaiTypeUrl(String url) {
+        String utf8Url = null;
+        try {
+            utf8Url = new String(url.getBytes("UTF-8"), "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            Log.e(TAG, "err " + e);
+        }
+        if (utf8Url != null && utf8Url.startsWith("wtai://wp/mc;")) {
+            return true;
+        }
+        return false;
+    }
+
         String utf8Url = null;
         try {
@@ -269,6 +297,21 @@ public class NavigationBarBase extends LinearLayout implements
         return false;
     }
 
+    private boolean handleWtaiTypeUrl(String url) {
+        Intent intent;
+        // perform generic parsing of the URI to turn it into an Intent.
+        intent = new Intent(Intent.ACTION_VIEW, Uri.parse(WebView.SCHEME_TEL + url.substring(("wtai://wp/mc;").length())));
+        try {
+            mContext.startActivity(intent);
+        } catch (ActivityNotFoundException ex) {
+            Log.w("Browser", "No resolveActivity " + url);
+            return false;
+        }
+        return true;
+    }
+
     private boolean handleRtspTypeUrl(String url) {
         Intent intent;
         // perform generic parsing of the URI to turn it into an Intent.

具體原理是在傳入url的時候,判斷類型,然後new一個intent去實現這個功能。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved