2010-08-03 60 views
4

在android上,當內置瀏覽器遇到電子郵件或電話號碼並按下時,會出現一個對話框。有Android WebView檢測並彈出電子郵件對話框或電話對話框

但是,如果我導航到我的應用程序的webview中的那個URL,這不再是這種情況。

是否有我的web視圖展示與瀏覽器應用程序在檢測電子郵件和電話號碼時彈出相應默認對話框相同的屬性?

我知道iPhone可以用界面生成器中的複選框很容易地做到這一點,我希望android可以做到這一點。

我已走進一看這樣的鏈接爲:

Is there any way to have WebView auto-link URLs and phone numbers in Android?

,並使用該中斷鏈接點擊的功能,但是這並不能真正幫助我,因爲電話號碼和電子郵件,不一定非得有聯繫。

回答

1

這是電話鏈接,你可以添加如果另一個郵件鏈接:)

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.startsWith("tel:")) { 
       Intent intent = new Intent(Intent.ACTION_DIAL, 
         Uri.parse(url)); 
       startActivity(intent); 
     }else if(url.startsWith("http:") || url.startsWith("https:")) { 
      view.loadUrl(url); 
     } 
     return true; 
    } 
0
@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       if (url.startsWith("mailto:")) { 
        try { 
         Intent emailIntent = new Intent(Intent.ACTION_SEND, Uri.parse(url)); 
         emailIntent.setType("message/rfc822"); 
         String recipient = url.substring(url.indexOf(":")+1); 
         if (TextUtils.isEmpty(recipient)) recipient = "[email protected]"; 
         emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{recipient}); 
         emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, mContext.getString(R.string.email_subject)); 
         emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, mContext.getString(R.string.email_message, " ")); 

         mContext.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 
        } 
        catch (Exception ex) {} 
      } 
      return true; 
     } 
2

我已經設置的WebView檢測電話,電子郵件和地址(在這種情況下會去谷歌地圖)。這是我的:

 URL = "file:///android_asset/dir/people.html"; 
     webView = (WebView) findViewById(R.id.webViewDir); 
     webView.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.startsWith("tel:")) { 
       Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } else if (url.startsWith("mailto:")) { 
       url = url.substring(7); 
       String body = "Body of message."; 
       Intent mail = new Intent(Intent.ACTION_SEND); 
       mail.setType("application/octet-stream"); 
       mail.putExtra(Intent.EXTRA_EMAIL, new String[] { url }); 
       mail.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
       mail.putExtra(Intent.EXTRA_TEXT, body); 
       startActivity(mail); 
       return true; 
      } else if (url.startsWith("map:")){ 
       url = url.substring(4); 
       String map = "http://maps.google.com/maps?q=" + url; 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(map)); 
       startActivity(intent); 
       return true; 
      } 
      return false; 
     } 
    }); 
    webView.loadUrl(URL);