Java Code Examples for android.content.pm.PackageManager#queryIntentActivities()

The following examples show how to use android.content.pm.PackageManager#queryIntentActivities() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CustomTabsHelper.java    From AndroidProjects with MIT License 7 votes vote down vote up
/**
 * Used to check whether there is a specialized handler for a given intent.
 * @param intent The intent to check with.
 * @return Whether there is a specialized handler for the given intent.
 */
private static boolean hasSpecializedHandlerIntents(Context context, Intent intent) {
    try {
        PackageManager pm = context.getPackageManager();
        List<ResolveInfo> handlers = pm.queryIntentActivities(
                intent,
                PackageManager.GET_RESOLVED_FILTER);
        if (handlers == null || handlers.size() == 0) {
            return false;
        }
        for (ResolveInfo resolveInfo : handlers) {
            IntentFilter filter = resolveInfo.filter;
            if (filter == null) continue;
            if (filter.countDataAuthorities() == 0 || filter.countDataPaths() == 0) continue;
            if (resolveInfo.activityInfo == null) continue;
            return true;
        }
    } catch (RuntimeException e) {
        Log.e(TAG, "Runtime exception while getting specialized handlers");
    }
    return false;
}
 
Example 2
Source File: IconPackManager.java    From emerald with GNU General Public License v3.0 7 votes vote down vote up
public Map<String, String> getIconPacks() {
	Map<String, String> iconPacks = new HashMap<String, String>();
	PackageManager pm = context.getPackageManager();
	List<ResolveInfo> iconPacksInfo = pm.queryIntentActivities(new Intent("org.adw.launcher.THEMES"), PackageManager.GET_META_DATA);
	String iconPackPackage = null;
	String iconPackName = null;
	for (ResolveInfo info: iconPacksInfo) {
		iconPackPackage = info.activityInfo.packageName;
		ApplicationInfo ai = null;
		try {
			ai = pm.getApplicationInfo(iconPackPackage, PackageManager.GET_META_DATA);
			iconPackName = pm.getApplicationLabel(ai).toString();
		} catch (PackageManager.NameNotFoundException e) {}
		iconPacks.put(iconPackName, iconPackPackage);
	}
	return iconPacks;
}
 
Example 3
Source File: AppNavHomeActivity.java    From V.FlyoutTest with MIT License 6 votes vote down vote up
protected List<SampleInfo> querySampleActivities() {
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.setPackage(getPackageName());
    intent.addCategory(Intent.CATEGORY_SAMPLE_CODE);

    PackageManager pm = getPackageManager();
    List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);

    ArrayList<SampleInfo> samples = new ArrayList<SampleInfo>();

    final int count = infos.size();
    for (int i = 0; i < count; i++) {
        final ResolveInfo info = infos.get(i);
        final CharSequence labelSeq = info.loadLabel(pm);
        String label = labelSeq != null ? labelSeq.toString() : info.activityInfo.name;

        Intent target = new Intent();
        target.setClassName(info.activityInfo.applicationInfo.packageName,
                info.activityInfo.name);
        SampleInfo sample = new SampleInfo(label, target);
        samples.add(sample);
    }

    return samples;
}
 
Example 4
Source File: KcaService.java    From kcanotify with GNU General Public License v3.0 6 votes vote down vote up
public boolean isPackageExist(String name) {
    boolean isExist = false;

    PackageManager pkgMgr = getPackageManager();
    List<ResolveInfo> mApps;
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    mApps = pkgMgr.queryIntentActivities(mainIntent, 0);

    try {
        for (int i = 0; i < mApps.size(); i++) {
            if (mApps.get(i).activityInfo.packageName.startsWith(name)) {
                isExist = true;
                break;
            }
        }
    } catch (Exception e) {
        isExist = false;
    }
    return isExist;
}
 
Example 5
Source File: BadgeUtils.java    From ti.goosh with MIT License 6 votes vote down vote up
private static String getLauncherClassName(Context context) {
    PackageManager pm = context.getPackageManager();

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
    for (ResolveInfo resolveInfo : resolveInfos) {
        String pkgName = resolveInfo.activityInfo.applicationInfo.packageName;
        if (pkgName.equalsIgnoreCase(context.getPackageName())) {
            String className = resolveInfo.activityInfo.name;
            return className;
        }
    }
    return null;
}
 
Example 6
Source File: CustomTabsHelper.java    From custom-tabs-client with Apache License 2.0 6 votes vote down vote up
/**
 * Used to check whether there is a specialized handler for a given intent.
 * @param intent The intent to check with.
 * @return Whether there is a specialized handler for the given intent.
 */
private static boolean hasSpecializedHandlerIntents(Context context, Intent intent) {
    try {
        PackageManager pm = context.getPackageManager();
        List<ResolveInfo> handlers = pm.queryIntentActivities(
                intent,
                PackageManager.GET_RESOLVED_FILTER);
        if (handlers == null || handlers.size() == 0) {
            return false;
        }
        for (ResolveInfo resolveInfo : handlers) {
            IntentFilter filter = resolveInfo.filter;
            if (filter == null) continue;
            if (filter.countDataAuthorities() == 0 || filter.countDataPaths() == 0) continue;
            if (resolveInfo.activityInfo == null) continue;
            return true;
        }
    } catch (RuntimeException e) {
        Log.e(TAG, "Runtime exception while getting specialized handlers");
    }
    return false;
}
 
Example 7
Source File: Utility.java    From iBeebo with GNU General Public License v3.0 5 votes vote down vote up
public static boolean isGooglePlaySafe(Activity activity) {
    Uri uri = Uri.parse("http://play.google.com/store/apps/details?id=com.google.android.gms");
    Intent mapCall = new Intent(Intent.ACTION_VIEW, uri);
    mapCall.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
    mapCall.setPackage("com.android.vending");
    PackageManager packageManager = activity.getPackageManager();
    List<ResolveInfo> activities = packageManager.queryIntentActivities(mapCall, 0);
    return activities.size() > 0;
}
 
Example 8
Source File: IntentIntegrator.java    From CodenameOne with GNU General Public License v2.0 5 votes vote down vote up
private String findTargetAppPackage(Intent intent) {
    PackageManager pm = activity.getPackageManager();
    List<ResolveInfo> availableApps = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    if (availableApps != null) {
        for (ResolveInfo availableApp : availableApps) {
            String packageName = availableApp.activityInfo.packageName;
            if (targetApplications.contains(packageName)) {
                return packageName;
            }
        }
    }
    return null;
}
 
Example 9
Source File: PackageUtils.java    From RedEnvelopeAssistant with MIT License 5 votes vote down vote up
private static boolean couldOpen(PackageManager pm, Context context, Intent resolveIntent) {
	List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
	if (apps == null || apps.size() < 1) {
		return false;
	}
	Iterator<ResolveInfo> it = apps.iterator();
	if (it.hasNext()) {
		return true;
	} else {
		return false;
	}
}
 
Example 10
Source File: FileMetadataUtil.java    From science-journal with Apache License 2.0 5 votes vote down vote up
public Intent createPhotoShareIntent(
    Context context,
    AppAccount appAccount,
    String experimentId,
    String imageName,
    String imageCaption) {

  if (!ExportService.canShare(context, appAccount)) {
    return null;
  }

  Intent shareIntent = new Intent(Intent.ACTION_SEND);
  shareIntent.setType("image/*");
  File imageFile = new File(getExperimentDirectory(appAccount, experimentId), imageName);
  Uri uri = FileProvider.getUriForFile(context, context.getPackageName(), imageFile);

  shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
  shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
  shareIntent.putExtra(Intent.EXTRA_TEXT, imageCaption);

  PackageManager packageManager = context.getPackageManager();
  List activities =
      packageManager.queryIntentActivities(shareIntent, PackageManager.MATCH_DEFAULT_ONLY);

  if (activities.size() > 0) {
    return shareIntent;
  }
  return null;
}
 
Example 11
Source File: GesturesPreference.java    From HgLauncher with GNU General Public License v3.0 5 votes vote down vote up
private void getAppList() {
    PackageManager manager = requireActivity().getPackageManager();
    List<String> entries = new ArrayList<>();
    List<String> entryValues = new ArrayList<>();

    // Get default value.
    entries.add(getString(R.string.gesture_action_default));
    entryValues.add(getString(R.string.gesture_action_default_value));

    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> availableActivities = manager.queryIntentActivities(intent, 0);

    Collections.sort(availableActivities, new ResolveInfo.DisplayNameComparator(manager));

    // Fetch apps and feed it into our list.
    for (ResolveInfo resolveInfo : availableActivities) {
        String appName = resolveInfo.loadLabel(manager).toString();
        String packageName = resolveInfo.activityInfo.packageName + "/" + resolveInfo.activityInfo.name;
        entries.add(appName);
        entryValues.add(packageName);
    }

    appListEntries = entries.toArray(new CharSequence[0]);
    appListEntryValues = entryValues.toArray(new CharSequence[0]);
}
 
Example 12
Source File: IntentUtils.java    From JumpGo with Mozilla Public License 2.0 5 votes vote down vote up
/**
 * Search for intent handlers that are specific to this URL aka, specialized
 * apps like google maps or youtube
 */
private boolean isSpecializedHandlerAvailable(@NonNull Intent intent) {
    PackageManager pm = mActivity.getPackageManager();
    List<ResolveInfo> handlers = pm.queryIntentActivities(intent,
        PackageManager.GET_RESOLVED_FILTER);
    if (handlers == null || handlers.isEmpty()) {
        return false;
    }
    for (ResolveInfo resolveInfo : handlers) {
        IntentFilter filter = resolveInfo.filter;
        if (filter == null) {
            // No intent filter matches this intent?
            // Error on the side of staying in the browser, ignore
            continue;
        }
        // NOTICE: Use of && instead of || will cause the browser
        // to launch a new intent for every URL, using OR only
        // launches a new one if there is a non-browser app that
        // can handle it.
        // Previously we checked the number of data paths, but it is unnecessary
        // filter.countDataAuthorities() == 0 || filter.countDataPaths() == 0
        if (filter.countDataAuthorities() == 0) {
            // Generic handler, skip
            continue;
        }
        return true;
    }
    return false;
}
 
Example 13
Source File: AdapterUtils.java    From matrix-android-console with Apache License 2.0 5 votes vote down vote up
/** Launch a SMS intent if the device is capable.
 *
 * @param activity The parent activity (for context)
 * @param number The number to sms (not the full URI)
 * @param text The sms body
 */
public static void launchSmsIntent(final Activity activity, String number, String text) {
    Log.i(LOG_TAG,"Launch SMS intent to "+number);
    // create sms intent
    Uri smsUri = Uri.parse("smsto:" + number);
    Intent smsIntent = new Intent(Intent.ACTION_SENDTO, smsUri);
    smsIntent.putExtra("sms_body", text);
    // make sure there is an activity which can handle the intent.
    PackageManager smspackageManager = activity.getPackageManager();
    List<ResolveInfo> smsresolveInfos = smspackageManager.queryIntentActivities(smsIntent, 0);
    if(smsresolveInfos.size() > 0) {
        activity.startActivity(smsIntent);
    }
}
 
Example 14
Source File: Utils.java    From persistentsearchview with Apache License 2.0 5 votes vote down vote up
/**
 * Checks whether the speech recognition is available on the device or not.
 *
 * @param context The context
 *
 * @return true if available; false otherwise
 */
public static boolean isSpeechRecognitionAvailable(@NonNull Context context) {
    Preconditions.nonNull(context);

    final PackageManager packageManager = context.getPackageManager();

    final List<ResolveInfo> activities = packageManager.queryIntentActivities(
        new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),
        PackageManager.MATCH_DEFAULT_ONLY
    );

    return ((activities != null) && (activities.size() > 0));
}
 
Example 15
Source File: SwitchAccessPreferenceActivity.java    From talkback with Apache License 2.0 5 votes vote down vote up
private boolean canHandleIntent(Intent intent) {
  Activity activity = getActivity();
  if (activity == null) {
    return false;
  }

  PackageManager manager = activity.getPackageManager();
  List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
  return (infos != null) && !infos.isEmpty();
}
 
Example 16
Source File: IntentUtils.java    From Xndroid with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Search for intent handlers that are specific to this URL aka, specialized
 * apps like google maps or youtube
 */
private boolean isSpecializedHandlerAvailable(@NonNull Intent intent) {
    PackageManager pm = mActivity.getPackageManager();
    List<ResolveInfo> handlers = pm.queryIntentActivities(intent,
        PackageManager.GET_RESOLVED_FILTER);
    if (handlers == null || handlers.isEmpty()) {
        return false;
    }
    for (ResolveInfo resolveInfo : handlers) {
        IntentFilter filter = resolveInfo.filter;
        if (filter == null) {
            // No intent filter matches this intent?
            // Error on the side of staying in the browser, ignore
            continue;
        }
        // NOTICE: Use of && instead of || will cause the browser
        // to launch a new intent for every URL, using OR only
        // launches a new one if there is a non-browser app that
        // can handle it.
        // Previously we checked the number of data paths, but it is unnecessary
        // filter.countDataAuthorities() == 0 || filter.countDataPaths() == 0
        if (filter.countDataAuthorities() == 0) {
            // Generic handler, skip
            continue;
        }
        return true;
    }
    return false;
}
 
Example 17
Source File: MainActivity.java    From AndroidInstantVideo with Apache License 2.0 4 votes vote down vote up
protected List<Map<String, Object>> getData(String prefix) {
    List<Map<String, Object>> myData = new ArrayList<>();

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(CATEGORY_ACTIVITIES);

    PackageManager pm = getPackageManager();
    List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);

    if (null == list) {
        return myData;
    }

    String[] prefixPath;
    String prefixWithSlash = prefix;

    if (prefix.equals("")) {
        prefixPath = null;
    } else {
        prefixPath = prefix.split("/");
        prefixWithSlash = prefix + "/";
    }

    int len = list.size();

    Map<String, Boolean> entries = new HashMap<>();

    for (int i = 0; i < len; i++) {
        ResolveInfo info = list.get(i);
        CharSequence labelSeq = info.loadLabel(pm);
        String label = labelSeq != null
                ? labelSeq.toString()
                : info.activityInfo.name;
        if (prefixWithSlash.length() == 0 || label.startsWith(prefixWithSlash)) {

            String[] labelPath = label.split("/");

            String nextLabel = prefixPath == null ? labelPath[0] : labelPath[prefixPath.length];

            if ((prefixPath != null ? prefixPath.length : 0) == labelPath.length - 1) {
                addItem(myData, nextLabel, activityIntent(
                        info.activityInfo.applicationInfo.packageName,
                        info.activityInfo.name));
            } else {
                if (entries.get(nextLabel) == null) {
                    addItem(myData, nextLabel, browseIntent(prefix.equals("") ? nextLabel : prefix + "/" + nextLabel));
                    entries.put(nextLabel, true);
                }
            }
        }
    }

    Collections.sort(myData, sDisplayNameComparator);

    return myData;
}
 
Example 18
Source File: ApiDemos.java    From codeexamples-android with Eclipse Public License 1.0 4 votes vote down vote up
protected List<Map<String, Object>> getData(String prefix) {
    List<Map<String, Object>> myData = new ArrayList<Map<String, Object>>();

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_SAMPLE_CODE);

    PackageManager pm = getPackageManager();
    List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);

    if (null == list)
        return myData;

    String[] prefixPath;
    String prefixWithSlash = prefix;
    
    if (prefix.equals("")) {
        prefixPath = null;
    } else {
        prefixPath = prefix.split("/");
        prefixWithSlash = prefix + "/";
    }
    
    int len = list.size();
    
    Map<String, Boolean> entries = new HashMap<String, Boolean>();

    for (int i = 0; i < len; i++) {
        ResolveInfo info = list.get(i);
        CharSequence labelSeq = info.loadLabel(pm);
        String label = labelSeq != null
                ? labelSeq.toString()
                : info.activityInfo.name;
        
        if (prefixWithSlash.length() == 0 || label.startsWith(prefixWithSlash)) {
            
            String[] labelPath = label.split("/");

            String nextLabel = prefixPath == null ? labelPath[0] : labelPath[prefixPath.length];

            if ((prefixPath != null ? prefixPath.length : 0) == labelPath.length - 1) {
                addItem(myData, nextLabel, activityIntent(
                        info.activityInfo.applicationInfo.packageName,
                        info.activityInfo.name));
            } else {
                if (entries.get(nextLabel) == null) {
                    addItem(myData, nextLabel, browseIntent(prefix.equals("") ? nextLabel : prefix + "/" + nextLabel));
                    entries.put(nextLabel, true);
                }
            }
        }
    }

    Collections.sort(myData, sDisplayNameComparator);
    
    return myData;
}
 
Example 19
Source File: Web3ViewClient.java    From alpha-wallet-android with MIT License 4 votes vote down vote up
private boolean isIntentAvailable(Intent intent)
{
    final PackageManager packageManager = context.getPackageManager();
    List list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}
 
Example 20
Source File: TwaProviderPicker.java    From custom-tabs-client with Apache License 2.0 4 votes vote down vote up
/**
 * Chooses an appropriate provider (see class description) and the launch mode that browser
 * supports.
 */
public static Action pickProvider(PackageManager pm) {
    // TODO(peconn): Should we use "https://" instead?
    Intent queryBrowsersIntent = new Intent()
            .setAction(Intent.ACTION_VIEW)
            .addCategory(Intent.CATEGORY_BROWSABLE)
            .setData(Uri.parse("http://"));

    if (sPackageNameForTesting != null) {
        queryBrowsersIntent.setPackage(sPackageNameForTesting);
    }

    String bestCctProvider = null;
    String bestBrowserProvider = null;

    // These packages will be in order of Android's preference.
    List<ResolveInfo> possibleProviders
            = pm.queryIntentActivities(queryBrowsersIntent, PackageManager.MATCH_DEFAULT_ONLY);

    // According to the documentation, the flag we want to use above is MATCH_DEFAULT_ONLY.
    // This would match all the browsers installed on the user's system whose intent handler
    // contains the category Intent.CATEGORY_DEFAULT. However, in Android M the behavior of
    // the PackageManager changed to only return the default browser unless the MATCH_ALL is
    // passed (this is specific to querying browsers - if you query for any other type of
    // package, MATCH_DEFAULT_ONLY will work as documented). This flag did not exist on Android
    // versions before M, so we only use it in that case.
    //
    // Additionally we add the result of the call with MATCH_ALL onto the end of the result of
    // MATCH_DEFAULT_ONLY (instead of calling queryIntentActivities just once, with MATCH_ALL)
    // because (again, as opposed to the documentation) when MATCH_ALL is used the results are
    // not returned in order of Android's preference.
    //
    // This will result in the user's default browser being in the list twice, however that
    // shouldn't affect the correctness of the following code.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        possibleProviders.addAll(pm.queryIntentActivities(queryBrowsersIntent,
                PackageManager.MATCH_ALL));
    }

    Map<String, Integer> customTabsServices = getLaunchModesForCustomTabsServices(pm);

    for (ResolveInfo possibleProvider : possibleProviders) {
        String providerName = possibleProvider.activityInfo.packageName;

        @LaunchMode int launchMode = customTabsServices.containsKey(providerName)
                ? customTabsServices.get(providerName) : LaunchMode.BROWSER;

        switch (launchMode) {
            case LaunchMode.TRUSTED_WEB_ACTIVITY:
                Log.d(TAG, "Found TWA provider, finishing search: " + providerName);
                return new Action(LaunchMode.TRUSTED_WEB_ACTIVITY, providerName);
            case LaunchMode.CUSTOM_TAB:
                Log.d(TAG, "Found Custom Tabs provider: " + providerName);
                if (bestCctProvider == null) bestCctProvider = providerName;
                break;
            case LaunchMode.BROWSER:
                Log.d(TAG, "Found browser: " + providerName);
                if (bestBrowserProvider == null) bestBrowserProvider = providerName;
                break;
        }
    }

    if (bestCctProvider != null) {
        Log.d(TAG, "Found no TWA providers, using first Custom Tabs provider: "
                + bestCctProvider);
        return new Action(LaunchMode.CUSTOM_TAB, bestCctProvider);
    }

    Log.d(TAG, "Found no TWA providers, using first browser: " + bestBrowserProvider);
    return new Action(LaunchMode.BROWSER, bestBrowserProvider);
}