`
ericbaner
  • 浏览: 173746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

检测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;
}

 

 

可以这样用:

 

@Override
public 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作出相应的定制,如不可用,提示用户去安装应用等等,

分享到:
评论

相关推荐

    Android高级编程--源代码

    由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地...

    疯狂Android讲义源码

     第1章 Android应用与开发环境 1  1.1 Android的发展和历史 2  1.1.1 Android的发展和简介 2  1.1.2 Android平台架构及特性 3  1.2 搭建Android开发环境 5  1.2.1 下载和安装Android SDK 5  1.2.2 安装...

    疯狂Android讲义.part2

    第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 ...

    疯狂Android讲义.part1

    第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 ...

    Google Android SDK开发范例大全(完整版)

    Android 应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。 Android 应用程序是连同一个 AndroidManifest.xml 文件一起部署到设备的。AndroidManifest.xml 包含必要的配置信息,以便将...

    精通ANDROID 3(中文版)1/2

    3.1.5 已编译和未编译的Android资源  3.2 Android关键资源  3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  ...

    实验四-Android基本组件交互实验.doc

    这样一来当系统或 另外的应用程序发出特定广播时,该应用程序就可以接受并做出回应,如启动Activity 等。 接受广播的时候就需要通过IntentFilter对象来进行过滤。BroadcastReceiver的生 命周期比较简单,其只有一个...

    精通Android 3 (中文版)2/2

    3.1.5 已编译和未编译的Android资源  3.2 Android关键资源  3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  ...

    Example_NovaTheme:记录了Nova Launcher的示例主题

    Nova Launcher是Android的高度可定制的启动器。 这种定制的一部分来自像您这样的开发人员。 本文档介绍了Nova Launcher的主题格式。 包括Nova Launcher在内的大多数启动器都支持Go Launcher中主题格式的超集。 ...

Global site tag (gtag.js) - Google Analytics