方式 一、PackageManager的resolveActivity();
public abstract ResolveInfo resolveActivity(Intent intent, int flags);
方式二、PackageManager的queryIntentActivities();
public abstract List<ResolveInfo> queryIntentActivities(Intent intent, int flags);
方式一和方式二的参数说明:
第一个参数代表Intent, 需要匹配的Intent信息;
第二个参数:设置PackageManager.MATCH_DEFAULT_ONLY
注意: 如果第二参数适用MATCH_DEFAULT_ONLY这个标记位, 这个标记位的含义是仅仅匹配那些在intent-filter中声明了
<category android:name="android.intent.category.DEFAULT" />此category的Activity。使用这个标记位的意义在于, 只要上述两个方法不返回null, 那么startActivity一定可以成功。
如果不使用这个标记位, 就可以把intent-filter中category不含DEFAULT的那些Activity给匹配出来, 从而导致startActivity可能失败。
方式三、Intent的resolveActivity();
ComponentName componentName = intent.resolveActivity();