当我们调用 Intent 时,如果没有找到与此 Intent 匹配的 Activity 组件(Component)时,应用将报以下错误:
android.content.ActivityNotFoundException:Unable to find explicit activity class
因此,在启动 Activity 之前要先判断 Intent 在此机器上是否可用。
方法一:
public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> list =
packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
方法二:
//直接调用一行代码
if (intent.resolveActivity(getPackageManager()) != null) { //存在
startActivity(intent);
} else { //不存在
Log.e("", "not exists");
}