Intent在Android中用的很多,在某些特定情况下,有些Intent并不能够得到回应,为了避免这种情况的出现,需要判特定的Intent在当前系统的运行条件下是否可用。这样可以根据不同的系统配置提前屏蔽某些无法正常执行的功能或者引导用户通过某种方式提前为系统增加必要的运行条件,
预防异常的代码如下:
public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List list =
packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
重点为PackageManager的queryIntentActivities(Intent intent)方法;
另一种方法是事后错误补救,利用ActivityNotFoundException实时跟踪捕捉startActivity()或者startActivityForResult()执行过程中由于无法找到与其相匹配的Activities而抛出的异常,从而给出针对这种异常的解决办法。