2017-10-01 3 views
0

Je suis en train d'essayer d'ouvrir un tel: lien sur android webview, mais il fait planter mon application, s'il vous plaît comment quelqu'un peut résoudre ce problème ou me dire ce qui ne va pas.Android webview app crash lors de la tentative d'ouverture dire lien

MyAppWebViewClient.java

package org.event2u.event2u; 

import android.content.Intent; 
import android.net.Uri; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MyAppWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (Uri.parse(url).getHost().endsWith("event2u.org")) { 
      return false; 
     } 
     if (url.startsWith("tel:")) { 
      Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
      view.getContext().startActivity(intent); 
      //view.reload(); 
      return true; 
     } 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     view.getContext().startActivity(intent); 
     return true; 
    } 
} 
+0

logcat show pleae –

+0

Ajouter le journal des blocages. – TDG

+0

@TDG mon code a été respecté sans erreur, mais quand je lance l'apk sur mon téléphone, il se chargera très bien sauf quand je clique sur tel: lien il montrera «malheureusement l'application a arrêté» – Peter

Répondre

0

Je l'ai essayé avec ce code et l'application ne tombe pas en panne.

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) { 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } else { 
       view.loadUrl(url); 
       return true; 
      } 

     } 
    } 

Je pense que le problème, il est parce que vous accident dites ceci:

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
     view.getContext().startActivity(intent);