Java tutorial
//package com.java2s; /** * (c) Winterwell Associates Ltd, used under MIT License. This file is background IP. */ import java.util.ArrayList; import java.util.List; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.util.Log; public class Main { /** * Try to pick the app to handle this intent. * @param context * @param intent * @param matchMe E.g. "twitter" Pick the first app whose name contains this. * Can be null for pick-anything. * @return true if a match was found */ public static boolean pickIntentHandler(Context context, Intent intent, String matchMe) { final PackageManager pm = context.getPackageManager(); final List<ResolveInfo> activityList = pm.queryIntentActivities(intent, 0); List<String> handlers = new ArrayList(activityList.size()); for (ResolveInfo app : activityList) { String name = app.activityInfo.name; handlers.add(name); if (matchMe == null || name.contains(matchMe)) { ActivityInfo activity = app.activityInfo; ComponentName compname = new ComponentName(activity.applicationInfo.packageName, activity.name); // intent.addCategory(Intent.CATEGORY_LAUNCHER); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); intent.setComponent(compname); return true; } } Log.d("pick-intent", "No match for " + matchMe + " in " + handlers); return false; } }