当前位置: 代码迷 >> Android >> 检测Android系统当前已安装的应用是否可响应特定Intent
  详细解决方案

检测Android系统当前已安装的应用是否可响应特定Intent

热度:57   发布时间:2016-05-01 19:09:32.0
检测Android系统目前已安装的应用是否可响应特定Intent
/** * Indicates whether the specified action can be used as an intent. This * method queries the package manager for installed packages that can * respond to an intent with the specified action. If no suitable package is * found, this method returns false. * * @param context The application's environment. * @param action The Intent action to check for availability. * * @return True if an Intent with the specified action can be sent and *         responded to, false otherwise. */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;}

?

?

可以这样用:

?

@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {    final boolean scanAvailable = isIntentAvailable(this,        "com.google.zxing.client.android.SCAN");    MenuItem item;    item = menu.findItem(R.id.menu_item_add);    item.setEnabled(scanAvailable);    return super.onPrepareOptionsMenu(menu);}

?

?

也可以捕获ActivityNotFoundException异常,当调用startActivity()的时候, 来判断是否支持一个Intent。

?

但用上述的方法,可以让你事先得到判断结果,从而对特定UI作出相应的定制,如不可用,提示用户去安装应用等等,

  相关解决方案