在android中。某些应用在声明过滤器中声明了ACTION_VIEW和ACTION_SEND。我想获得所有ACTION_VIEW应用程序但不是ACTION_SEND。可能吗?谢谢。
答案 0 :(得分:0)
搜索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;
}