隐式启动判断是否有匹配的Intent

一、PackageManager的resolveActivity

  public abstract ResolveInfo resolveActivity(Intent intent, int flags);
getPackageManager().resolveActivity();

返回能够匹配的Intent,如果不能匹配就返回NULL,

二、PackageManager的queryIntentActivities

public abstract List<ResolveInfo> queryIntentActivities(Intent intent,
        int flags);
getPackageManager().queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);

返回所有成功匹配的Activity信息

三、Intent的resolveActivity

 public ComponentName resolveActivity(PackageManager pm)
Intent intent = new Intent();
        ComponentName componentName = intent.resolveActivity();

第一个参数代表Intent

第二个参数:设置PackageManager.MATCH_DEFAULT_ONLY

时间: 2024-10-19 11:00:05

隐式启动判断是否有匹配的Intent的相关文章

Android隐式启动Activity匹配详解:Action,category,data

更多例子请参考:http://hi.baidu.com/wishwingliao/blog/item/0a38ccfce06f39e8fc037f85.html 隐式启动Activity的intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data,可以是全部或部分匹配 同样适用于Service和BroadcastReceiver,下面是以Activity为例 MainActivity.java --主Activity TestActiv

activity之隐式启动

action:当有多个action匹配隐式启动时会弹出选择框 categroy :动作执行环境 Launcher属性通常与main配合使用 Defalut:按照普通的执行顺序.

Android隐式启动Activity可能存在的坑

转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 本篇文章,对隐式启动Activity再做分析. 有些人可能会说了,隐式启动活动不是很简单吗?这有什么不理解的?话先别说的这么早,对于隐式启动,还是具有很大的坑要爬的,当然,您如果是一个资深开发者就另当别论了. 本篇文章,我们从最简单的开始,一步步引入,相信这样的方式,读起来也会轻松一些. 我们平时启动一个活动,会通过两种方式.1.显示启动:2.隐式启动. (一)首先,我们来看两个很简单的小案例(实现打电话). 我们再在布局文件提供

显式启动Activity和隐式启动Activity

1.显式启动Intent intent = new Intent(this, class);startActivity(intent); 2.隐式启动AndroidManifest.xml中定义某个Activity的intent-fliter<intent-filter><action android:name="com.example.activity.ACTION_START" /><category android:name="androi

Intent显示启动与隐式启动

Android的Acitivity启动大致有两种方式:显式启动与隐式启动.下面分别介绍: 1.显示启动: 清单文件注册Activity <activity android:name="com.example.intentmethod.XianshiActivity" android:label="@string/xianshi_label" > </activity> 启动方法: Intent intent = new Intent(Main

Android-----Intent中通过startActivity(Intent intent )隐式启动新的Activity

显式Intent我已经简单使用过了,也介绍过概念,现在来说一说隐式Intent: 隐式Intent:就是只在Intent中设置要进行的动作,可以用setAction()和setData()来填入要执行的动作和数据,然后再用startActivity()启动合适的程序. 此外:如果手机中有多个适合的程序,还会弹出列表供用户选择(假如你手机有两个浏览器,你打开一个连接,这是系统就会弹出两个浏览器列表供你选择) 在此举个使用隐式Intent打开activity的快速拨号例子: xml布局文件代码如下:

显式与隐式启动Activity

1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.metrox.l8"> 4 5 <application 6 android:allowBackup="true&quo

android 在5.0以后不允许使用隐式Intent方式来启动Service

android5.0以后不能使用隐式intent :需要指定Intent的ComponentName信息:intent.setComponent(xxx),或指定Intent的setPackage("包名"),如果两者都没有指定的话将会报以上错误.尤其在framework层启动APP层的service时,如果是隐式启动service,可能会导致系统进程挂掉,出现不断重启的现象. 三 解决方法 1. Intent intent = new Intent();    ComponentNa

Android 5.0之后隐式声明Intent 启动Service引发的问题

一.概述 Android系统升级到5.0之后做了不少的变化(5.0变化),开发人员一定要注意这些变化,要不然就有的折腾了.这次最大的变化应该是把Dalvik虚拟机改成了ART(Android Runtime),后续会专门讲解这一块.其他的都是一些零碎的问题,例如前段时间发了一篇Android 5.0之后修改了HashMap的实现(传送门).这篇主要讲一下遇到跟Service相关的问题. 二.详情 Service身为Android四大组件之一,它的使用频率还是比较高的,并且现在主要都是运用在比较关