Intentに対応するActivityがあるかどうかをどう判断しますか?

1849 ワード

Intentに対応するActivityがあるかどうかをどう判断しますか?少なくとも以下の2つの方法があり、最近使用したことがあるので、メモを取って、調べることができます.
1つ目は、次のとおりです.
1 public boolean isIntentResolvable(Intent intent) {

2     return intent.resolveActivity(this.getPackageManager()) != null;

3 }

2つ目は、複雑ですが、より多くの情報を得ることができ、より役に立つ場合があります.
public static boolean isIntentAvailable(String action) {

    final PackageManager packageManager = getPackageManager();

    final Intent intent = new Intent(action);

    List<ResolveInfo> list = packageManager.queryIntentActivities(intent,

            PackageManager.MATCH_DEFAULT_ONLY);

    Log.d("David", "list.size() = " + list.size());

    for (ResolveInfo res : list) {

        Log.d("David", "res.resolvePackageName = " + res.activityInfo.packageName);

    }

    return list.size() > 0;

}