您的位置:首页 > 其它

为什么隐式intent无法启动activity

2014-05-29 09:23 295 查看
由于是自学的安卓,一直看的是《安卓疯狂讲义》。虽然书里面写只要在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启动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: