2010-08-03 2 views
4

На андроиде, когда встроенный браузер попадает по электронной почте или номеру телефона, и он нажимается, для каждого открывается диалоговое окно.Наличие Android WebView для обнаружения и всплывающего диалогового окна или диалогового окна телефонных звонков

Однако, если я перейду к этому URL-адресу в веб-просмотре приложения, это уже не так.

В любом случае, чтобы мой веб-просмотр показывал те же свойства, что и приложение-браузер, при обнаружении электронных писем и телефонных номеров и появлении соответствующих диалогов по умолчанию при нажатии?

Я знаю, что iPhone может сделать это с помощью флажка в Interface Builder очень легко, я надеюсь, что андроид может сделать то же самое.

Я взял взгляд в такие ссылки как:

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

и используя функцию, которая прерывает ссылку щелчок, но это не помогает мне, потому что телефонные номера и сообщения электронной почты не обязательно быть связанными.

ответ

3

Я искал ту же проблему, что и у вас.

Если вы хотите сохранить URL-адрес, содержащийся в веб-просмотре, но введите номер телефона, начинающий набор, и адрес электронной почты запустит почтовый клиент, попробуйте это.

Android WebView "tel:" links show web page not found

Дно решение работает для меня.

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 для обнаружения телефона, адрес электронной почты и адрес (в этом случае будет идти в Google Карты). Это то, что у меня есть:

 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); 
Смежные вопросы