再请教Intent中隐式调用的问题

leetow2006 2019-09-20 10:19:14
我看书上说:在隐式调用Activity时,只有action和category中的内容同时能够
匹配上Intent中指定的action和category时,这个活动才能响应,可是我在
AndroidManifest.xml中,
<activity
android:name=".SecondActivity" >
<intent-filter>
<action android:name="com.example.activitytest.ABCD"/>

<category android:name="android.intent.category1"/>
<category android:name="android.intent.category2"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
然后在程序中,
Intent intent=new Intent();
intent.setAction("com.example.activitytest.ABCD");
startActivity(intent);
都能调用另一个活动,我发现只要有<category android:name="android.intent.category.DEFAULT"/>,
那么在程序中intent.addCategory方法可有可无,请问难道书上说的不对吗?还是我错在哪了?
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetow2006 2019-09-21
  • 打赏
  • 举报
回复
可是我添加在Intent里添加的category,也在Intent-Filter能找到,但是不全也能匹配成功,比如在Intent-Filter里有3项category,
我addCategory只有一项,但是仍然可以匹配成功,为什么
leetow2006 2019-09-20
  • 打赏
  • 举报
回复
怎么没人遇到这个问题吗
胡牧 2019-09-20
  • 打赏
  • 举报
回复
书上说的没错。category的匹配原则是这样的:
如果你的Intent里有addCategory,那么Intent里添加的所有category一定要在Intent-Filter里都能找到,这才算category匹配成功,如果没有addCategory,那么会默认添加"android.intent.category.DEFAULT"这个category。
也就是说,并没有要求你把所有的category都添加上才算匹配,而是你添加的category都是存在在Intent-Filter里的就匹配成功了。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧