-2

My code is:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view);
    ButterKnife.bind(this);

    String url = getIntent().getStringExtra(EXTRA_URL);

    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(url);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    });
}

When send mail link pressed, shows this error:

net::ERR_UNKNOWN_URL_SCHEME

regards!!

1 Answers1

0

You load the url BEFORE you set webviewclient. Try to set the webviewclient first and invoke loadUrl() afterwards.

EDIT

@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {

    Uri uri = Uri.parseUri(url);
    if ("mailto".equalsIgnoreCase(uri.getScheme()) == true) {
        try {

            // handle mailto-urls...
            Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
            sendIntent.setData(uri);
            view.getContext().startActivity(sendIntent);        

        } catch (ActivityNotFoundException e) {}
        return true;
    }
    // load everything else in webview
    return false;
}
A.D.
  • 1,412
  • 2
  • 19
  • 37
  • what is not working? More info... First, It is obviously bad to load a url and set a webviewclient afterwards. Correct it please. Second, the code presented above does not work as expected because you send EVERY url to the intent. But you just need "mailto" urls, see my edit. – A.D. Mar 14 '17 at 08:23