views:

83

answers:

2

Hi,

I tried to set anchor tag mailto attribute like

<a href='mailto:[email protected]'>[email protected]</a>

in webview. when i run the app on simulator and click on the link it is showing "Unsupported Action .."

How i can set mailto attribute work out in android webview....

Thanks

+1  A: 

WebView does not support advanced HTML tags... what you will have to do is:

  1. Set a webclient to your webview and override the url loading
  2. When you detect a link with mailto try to send the email.

I'm gonna give you a little snippet of code for you to have an idea. Keep in mind this is just a basic example and I can't test it right now:

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;
    }
}

Then, send the email:

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...));
}
Cristian
Thank you ccastiblanco
Praveenb
A: 

set to

myTemplate ="<a>[email protected]</a>";

or just

myTemplate ="[email protected]";

and load into your WebView

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