Esquema de url desconhecido da web do Android

Com o código abaixo, eu posso obter o meu url carregado corretamente, mas, eu fico "ERR_UNKNOWN_URL_SCHEME" ao tentar toque em html links que começa com mailto: whatsapp: e tg: (Telegrama).

Alguém me pode ajudar a resolver isto, por favor? Infelizmente não conheço Java de todo: ([[9]} Obrigado.

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.activity_main_webview);

        // Force links and redirects to open in the WebView instead of in a browser
        mWebView.setWebViewClient(new WebViewClient());

        // Enable Javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        // Use remote resource
        mWebView.loadUrl("http://myexample.com");
    }
}
Author: NGC7803, 2017-01-17

2 answers

Você tem que definir um cliente na webview e passar estes para uma intenção

webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if( URLUtil.isNetworkUrl(url) ) {
                return false;
            }
            if (appInstalledOrNot(url)) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity( intent );
            } else {
                // do something if app is not installed
            }
            return true;
        }

    });
}

Pode ter um método para verificar se o app está instalado

private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }

        return false;
    }
 7
Author: Cristian Gomez, 2017-01-19 15:49:45

mailto as ligações não serão carregadas no seu webview.Você tem que verificar para ele assim em shouldOverrideUrlLoading e lidar com ele com intent.

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("mailto:")) {

        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("text/plain");
        share.putExtra(Intent.EXTRA_TEXT, message);
        startActivity(Intent.createChooser(share, "Title of the dialog the system will open"));
        view.reload();
        return true;
    }
  }

Pergunta Similar Android WebView ERR_ UNKNOWN_URL_SCHEME Error

 0
Author: sunil sunny, 2017-05-23 12:08:53