前提1:IntentFilter 至少有一个 action 至少有一个Category,可以没有 Data 和 Type
前提2:如不雅有 Data,参数中 Data 必须相符 Data 规矩
前提3:Action 和 Category 必须同时匹配 Activity 中的一个 Action 和一个 Category (Category 默认:android.intent.category.DEFAULT)
隐式启动功能繁多,就不一一列举了,须要时直接搜刮相干代码即可,我们用打开一个网页为例:
这时,直接应用 Intent.resolveActivity() 办法没什愦问题:
- Uri uri = Uri.parse("http://www.abc.xyz");
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- if (intent.resolveActivity(getPackageManager()) != null) {
- startActivity(intent);
- } else {
- // 没有安装所需应用
- }
总结
经由浏览 PackageManager 的代码,发明还可以应用 packageManager.queryIntentActivities() 办法断定体系里是否有能解析指定 Intent 的应用。
- public boolean isAvailable(Context context, Intent intent) {
- PackageManager packageManager = context.getPackageManager();
- List list = packageManager.queryIntentActivities(intent,
- PackageManager.MATCH_DEFAULT_ONLY);
- return list.size() > 0;
- }
那么,总结下来就是:
方法一 PackageManager.getLaunchIntentForPackage() ,直接断定返回的 Intent 是否为空即可;
方法二 Intent.setComponent() ,应用 Intent.resolveActivityInfo() 或者 packageManager.queryIntentActivities() 两种方法;
方法三 隐式启动,应用 Intent.resolveActivity() 、 Intent.resolveActivityInfo() 、 packageManager.queryIntentActivities() 三种方法均可。
【编辑推荐】
- 大年夜零开端设计一款APP之Android设计规范篇
- Android必知必会-应用Intent打开第三方应用及验证可用性
- 在体系安然方面,Android 8.0 做出了一些重要改变
- 8种办法让Android成为强大年夜的临盆力对象
- 49个你应当懂得的Android Studio技能、插件与资本
推荐阅读
【编辑推荐】 大年夜法度榜样员到CTO,可能就差这一次改变 知加一周精选:法度榜样员上周薪资播报出炉,快来看看你的热度 终于找到法度榜样员无休止加班的原因了! 揭秘项目经>>>详细阅读
地址:http://www.17bianji.com/lsqh/37221.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示