как установить якорный тег mailto: атрибут в webview, android - PullRequest
3 голосов
/ 07 июля 2010

Я пытался установить атрибут якоря тега mailto как

<a href='mailto:info@company.com'>info@company.com</a>

в веб-просмотре.когда я запускаю приложение на симуляторе и нажимаю на ссылку, на которой показано «Неподдерживаемое действие ...»

Как настроить атрибут mailto в веб-браузере Android ....

Спасибо

Ответы [ 3 ]

3 голосов
/ 07 июля 2010

WebView не поддерживает расширенные теги HTML ... вам нужно будет сделать следующее:

  1. Установить веб-клиент для веб-просмотра и переопределить загрузку URL-адреса
  2. При обнаруженииссылка с mailto попытайтесь отправить электронное письмо.

Я дам вам небольшой фрагмент кода, чтобы у вас была идея.Имейте в виду, что это только базовый пример, и я не могу проверить его прямо сейчас:

public void onCreate(Bundle icicle) {
    // blablabla
    WebView webview = (WebView) findViewById(R.id.webview); 
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient( new YourWebClient()); 
    // blablabla
}

private class YourWebClient extends WebViewClient {     
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("mailto")) {
            // TODO: extract the email... that's your work, LOL
            String email = "";
            sendEmail();
            return super.shouldOverrideUrlLoading(view, url);
        }
        view.loadUrl(url);
        return true;
    }
}

Затем отправьте электронное письмо:

public void sendEmail(String email){
    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    emailIntent.setType("plain/text");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email});

    String mySubject = "this is just if you want";
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, mySubject);
    String myBodyText = "this is just if you want";
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, myBodyText);
    context.startActivity(Intent.createChooser(intent, "Send mail...));
}
0 голосов
/ 28 января 2012

Вот еще один вариант ответа Кристиана.

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
  if (!(url.startsWith("http") || url.startsWith("#"))) {
    launchIntent(url);
    return true;
  }
  view.loadUrl(url);
  return true;
}

private void launchIntent(String url){
    final Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
    Uri uri = Uri.parse(url);
    intent.setData(uri);
    context.startActivity(intent);
}

Это позволит привязывать теги, такие как mailto: tel: и google.navigation: q = + url + uncoded + address

Возможно, вы захотите изменить условие, если ваша html-страница имеет другие привязки, с которыми вы не хотите запускать намерения.

0 голосов
/ 07 июля 2010

установите на

myTemplate ="<a>info@company.com</a>";

или просто

myTemplate ="info@company.com";

и загрузите в свой WebView

mWebView.loadDataWithBaseURL(null, myTemplate, "text/html", "utf-8", null);
...