这篇文章介绍了Android 系统中使用的Intent的一个技巧,收藏一下,以后可能用到。
原文: http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710163.html
Android 提供了一个非常强大且易于使用的消息类型: Intent 。你可以使用 Intent 来将应用程序变成一个高级的库,而且可以使代码模块化并可重用。例如, Android Home 画面和 AnyCut 应用程序,使用 Intent 来创建快捷方式。
能够使用这么低耦合的 API 固然很好,但是,无法保障你发出的 Intent 能够被其它应用程序接收。这种 情况一般在第三方程序中发生,像 Panoramio 和它的 RADAR Intent 。
这篇文章将描述一个技巧,通过这个技巧可以判断出系统中是否 有应用程序能响应你想使用的 Intent 。下面的例子给出了一个辅助的方法,它能通过 Package Manager 查询系统中是否有 app 能响应特定的 Intent 。你的应用程序程序可以传入一 个 Intent 到 这个方法中,然后,显示或隐藏用户可能会去触发这个 Intent 的用户选项(举例)。
这里给出了这个辅助方法使用的示例:
在这个例子中,如果 Barcode Scanner 应用程序未安 装的话,菜单项是置灰的。
另外,简单一些的方式是调用 startActivity() 时捕获 ActivityNotFoundException 异常,但这种方式只能在问题发生时进行处理,而不能事先相 应地更新 UI ,且不能阻止用户做无用的动作。这里描述的技巧还可以在启动的时候询问用户是否要安装缺少的 Package ,然后,通过相应的 URI ,引导用户去 Android Market 下载。