1
でアンドロイド。いくつかのアプリケーションは、インテントフィルタにACTION_VIEWとACTION_SENDの両方を宣言します。私はすべてのACTION_VIEWアプリケーションを取得したいが、ACTION_SENDは取得しない。出来ますか?ありがとうございました。インテントを取得する方法Intent.ACTION_VIEWではなくIntent.ACTION_SENDを取得する
でアンドロイド。いくつかのアプリケーションは、インテントフィルタにACTION_VIEWとACTION_SENDの両方を宣言します。私はすべてのACTION_VIEWアプリケーションを取得したいが、ACTION_SENDは取得しない。出来ますか?ありがとうございました。インテントを取得する方法Intent.ACTION_VIEWではなくIntent.ACTION_SENDを取得する
ACTION_SEND
とACTION_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;
}
ありがとう。しかし、それは私にとってはうまくいかないようです。私のコードは: 意図インテント=新しいインテント(Intent.ACTION_VIEW); startActivity(インテント); このようにして、私は必要としないアプリケーションをいくつか呼びます。私はこれらのアプリをフィルタリングしたい。 – donald
私はそれを得ました!質問は明確ではありません – lvl4fi4
@donald私の更新を確認してください – lvl4fi4