2017-04-25 5 views
0

私は自分のサイトを読み込むwebviewで作業します。 しかし、私の問題waz '共有'ボタン - それらのURLはlegalyではありません。 私はそれをアプリの意図によってうかがいましたが、コードに問題があります: アプリがデバイスにインストールされているかどうかを確認することはできません。 私の問題は、共有するためにクリックしたアプリが起動していないときにアプリが停止していることです。デバイス上にアプリケーションがあるかどうかを確認する

ここに私のコード:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // HERE YOU GET url 
      ProgressBar PB1 = (ProgressBar) findViewById(R.id.progressBar2); 
      PB1.setVisibility(View.VISIBLE); 
      if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) { 
       return super.shouldOverrideUrlLoading(view, url); 
      } else { 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 

       view.getContext().startActivity(intent); 
       browser("javascript:window.location.reload(true)"); 
       return true;/// super.shouldOverrideUrlLoading(view, url); 
      } 
        /*Toast.makeText(getParent(), "no app found to open this link!", Toast.LENGTH_LONG).show(); 
        return super.shouldOverrideUrlLoading(view, url);*/ 

     } 

答えて

0
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     try{ 
      // HERE YOU GET url 
      ProgressBar PB1 = (ProgressBar) findViewById(R.id.progressBar2); 
      PB1.setVisibility(View.VISIBLE); 
      if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) { 
       return super.shouldOverrideUrlLoading(view, url); 
      } else { 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 

       view.getContext().startActivity(intent); 
       browser("javascript:window.location.reload(true)"); 
       return true;/// super.shouldOverrideUrlLoading(view, url); 
      } 

     } 
     catch(Exception ignored){ 
    Toast.makeText(getParent(), "no app found to open this link!", 
    Toast.LENGTH_LONG).show(); 

      } 
     return super.shouldOverrideUrlLoading(view, url); 
     } 

はこのアプリが存在する判断にutilsの追加この方法

+0

それは私のために動作していません –

0

を行うことができます。 (あなたはAndroidManifest.xmlに設定条件を必要とする)

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
appInfos = packageManager.queryIntentActivities(mainIntent, 1); 
0

は意図を開始する前に次のチェックを追加します。

// Verify that the intent will resolve to an activity 
     if (sendIntent.resolveActivity(getPackageManager()) != null) { 
      view.getContext().startActivity(intent); 
     } else{ 
      Toast.makeText(getParent(), "no app found to open this link!", Toast.LENGTH_LONG).show(); 
} 
関連する問題