Announcement

Collapse
No announcement yet.

Website mit Whatsapp Link über Webview öffnen geht nicht ERR_UNKNOW_UR_SCHEME

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Website mit Whatsapp Link über Webview öffnen geht nicht ERR_UNKNOW_UR_SCHEME

    Hallo An Alle,
    Ich habe im Webview meine Website eingebunden. Die Website hat Links um Whatsappnachrichten zu verschicken. Im Browser vom Mobil funktioniert das wunderbar, also es wird das Whatsapp App geöffnet und ich kann die Nachricht verschicken.
    In Webview bekomme ich leider nur eine Fehleranzeige: webpage at whatsapp://send/?12365478 could not be loaded net::ERR_UNKNOW_UR_SCHEME.
    Habe schon einige Anleitungen probiert, aber bekomme es einfach nicht hin.

    Stell mal den Code vom MainActivity ein und die website ist:Werbung entfernt (Christian)
    Vielleicht kann mir dabei jemand helfen.


    Code:
    package com.shop.infinito;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    public class MainActivity extends AppCompatActivity {
        private WebView webView;
    
        @Override
        public void onBackPressed() {
            if (webView.canGoBack()) {
                webView.goBack();
            } else {
                super.onBackPressed();
            }
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            webView=(WebView)this.findViewById(R.id.web);
            webView.setWebViewClient(new WebViewClient());
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl("http://Werbung entfernt (Christian)/");
    
            webView.setWebViewClient(new WebViewClient() {
                public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) {
                    try {
                        webView.stopLoading();
                    } catch (Exception e) {
                    }
    
                    if (webView.canGoBack()) {
                        webView.goBack();
                    }
    
                    webView.loadUrl("about:blank");
                    AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
                    alertDialog.setTitle("Error");
                    alertDialog.setMessage("Verifique su conexión a Internet e intente nuevamente.");
                    alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Inténtalo de nuevo", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            finish();
                            startActivity(getIntent());
                        }
                    });
    
                    alertDialog.show();
                    super.onReceivedError(webView, errorCode, description, failingUrl);
                }
            });
        }
    
        public class myWebClient extends WebViewClient
        {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
                view.loadUrl(url);
                return true;
    
            }
        }
    Vielen Dank!!!
    Gruss aus Bolivien
    Zuletzt editiert von Christian Marquardt; 22.04.2020, 05:31.

  • #2
    https://stackoverflow.com/questions/...own-url-scheme
    Christian

    Comment


    • #3
      Hallo Christian,
      erstmal vielen Dank!!
      Was ich begriffen habe: Wenn der urlstart kein normales http oder https ist mus ein Intent gesetzt werden welche eine Aktion auslöst.
      Habe mir die Codes der Seite angesehen und das so verstanden. Nun erste Frage, dieser Code muss in das MainActivity eingefügt werden? Habe es probiert, aber bekommne da immer wieder Fehler. Ich weiss ich muss es selbst lernen, aber kannst du mir vielleicht zeigen wie und wo ich den Code einfügen muss, wenn es nicht zuviel verlangt ist.

      Vielen Dank

      Comment


      • #4
        Habe keine Android Entwicklungsumgebung, aber du musst deine webview erweitern mit
        Code:
          
        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;
                }
        
            });
        }
        Das sollte nach dieser Zeile passieren
        Code:
          
         mWebView = (WebView) findViewById(R.id.activity_main_webview);
        Christian

        Comment


        • #5
          Diesen Code habe ich nicht imActivity
          mWebView = (WebView) findViewById(R.id.activity_main_webview);

          Comment


          • #6
            Erstaunlich, habe ich die Zeile doch aus deinem Post kopiert
            Christian

            Comment


            • #7
              habe gerade den ganzen Code durchgesehen und habe diese Zeile wirklich nicht

              Comment


              • #8
                webView=(WebView)this.findViewById(R.id.web);
                webView.setWebViewClient(new WebViewClient());
                webView.getSettings().setJavaScriptEnabled(true);
                webView.loadUrl("http://*********/");

                Das habe ich

                Comment


                • #9

                  webView=(WebView)this.findViewById(R.id.web);
                  Christian

                  Comment


                  • #10
                    ok, mal sehem was daraus wird

                    Comment


                    • #11
                      Ok Code ist drin, nun kommt keine Fehlermeldung mehr, ABER eine neue Seite wo steht das Whatsapp nicht installiert ist und man es installieren muss. Ist aber installiert.

                      Comment


                      • #12
                        Das Problem ist, dass der UrlHandler für Whatsapp nicht gefunden wird.
                        Der Rechner "weiß", was er machen muss, wenn er eine URL bekommt die mit HTTP beginnt oder mit whatsapp.
                        Deine Anwendung muss das ermitteln und dann die entsprechende Anwendung aufrufen (HTTP -> Browser, whatsapp -> irgendwas anderes).
                        Danach musst du suchen
                        Christian

                        Comment


                        • #13
                          Und es funktioniert!!!!

                          Code:
                           
                           @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {     // TODO Auto-generated method stub    if(url != null && url.startsWith("whatsapp://"))     {         view.getContext().startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(url)));         return true;      }else {         return false;     }
                          Diesen Code hatte ich rumliegen und dank Dir wusste ich nun wo ich den einfügen musste.

                          Vielen Vielen Dank Christian!!!!

                          Comment

                          Working...
                          X