为什么隐式intent无法启动activity

由于是自学的安卓,一直看的是《安卓疯狂讲义》。虽然书里面写只要在activity的intent-filter里面配置相关属性即可被隐式intent启动,但是实际测试中却好像碰到了问题。



当程序创建Intent时,该Intent默认启动Category属性值为Intent.CATEGORY_DEFAULT常量(常量值为android.category_DEFAULT)的组件。


*既然是默认启动,如果我们在创建Intent时指定了category属性的值,而且目标组件的IntentFilter中也有该category的值,这样的隐式intent可以启动目标组件吗?
(经测试,不能启动!02-26 09:41:59.007: E/AndroidRuntime(404): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.aishang5wpj.intent.action.TEST_DIALOG cat=[com.aishang5wpj.intent.category.TEST_DIALOG] }
)


因此,虽然上面的粗体字代码并未指定目标的Intent的Category属性,但该Intent已有一个android.intent.category_DEFAULT属性值,因此被启动Activity的配置元素的<intent-filter.../>元素里至少还包括一个如下的<category../>子元素。


<category android:name="android.intent.category.DEFAULT" />


总结起来就是说,配置Activity时它的intent过滤器中必须有Category属性值为Intent.CATEGORY_DEFAULT常量,否则无法通过隐式intent启动。




 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值