2017-08-28 11 views

答えて

0

ACTION_SENDACTION_VIEWを検索し、どちらのアプリが両方を持っているかをチェックしてリストから除外します。

public ArrayList<ResolveInfo> getApps() { 
    ArrayList<ResolveInfo> result = new ArrayList<>(); 

    Intent view = new Intent(); 
    view.setAction(android.content.Intent.ACTION_VIEW); 
    view.setDataAndType(Uri.fromFile(new File("sdcard/blah/blah/blah")), "*/*"); 

    Intent send = new Intent(); 
    send.setAction(Intent.ACTION_SEND); 
    send.setDataAndType(Uri.fromFile(new File("sdcard/blah/blah/blah")), "*/*"); 

    PackageManager packageManager = this.getPackageManager(); 
    List<ResolveInfo> actionView = packageManager.queryIntentActivities(view, 0); 
    List<ResolveInfo> actionSend = packageManager.queryIntentActivities(send, 0); 

    for (ResolveInfo viewItem : actionView) { 
     boolean notFound = true; 

     for (ResolveInfo sendItem : actionSend) { 

      if (viewItem.activityInfo.name.equals(sendItem.activityInfo.name)) 
       notFound = false; 

      if (notFound) 
       result.add(viewItem); 
     } 
    } 


    return result; 
} 
+0

ありがとう。しかし、それは私にとってはうまくいかないようです。私のコードは: 意図インテント=新しいインテント(Intent.ACTION_VIEW); startActivity(インテント); このようにして、私は必要としないアプリケーションをいくつか呼びます。私はこれらのアプリをフィルタリングしたい。 – donald

+0

私はそれを得ました!質問は明確ではありません – lvl4fi4

+0

@donald私の更新を確認してください – lvl4fi4

関連する問題