android.intent.category.default设置,android细节之android.intent.category.DEFAULT的使用

我们知道,实现android的Activity之间相互跳转需要用到Intent,

Intent又分为显式Intent和隐式Intent,

显式Intent很简单,比如我在FirstActivity中想跳转到SecondActivity,只需要直接声明就行了:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

而在使用隐式Intent实现Activity之间跳转的时候,并没有明确指定要打开哪个activity,

而是通过指定3个参数:action,category,data,

然后让系统去寻找能够匹配得上这三个参数的Acativity,如果有多个符合条件的Activity,就会让用户选择其中一个打开。

例如我选择手机相册中的一张照片,点击“发送”按钮:

abee935e4da4bf664fcac129b33ccbd9.png

然后就可以让我选择是发送给QQ好友,微信好友还是发送到朋友圈。这实际上就是一个隐式Intent启动Activity的实例。

而决定一个Activity能够响应哪些Intent,就需要在AndroidManifest.xml的标签下配置的内容,可以指定当前活动能够响应的action,category和data,比如说我在SecondActivity下设置如下代码:

48304ba5e6f9fe08f3fa1abda7d326ab.png

android:name=".SecondActivity"

android:label="@string/title_activity_second"

android:theme="@style/AppTheme.NoActionBar" >

48304ba5e6f9fe08f3fa1abda7d326ab.png

再在MainActivity中通过隐式Intent:

Intent intent=new Intent("android.intent.action.MYACTION");

startActivity(intent);

然后就启动了SecondActivity。

在这里,看似我们在Intent中只指定了要打开的活动只需要响应一个Action为“android.intent.action.MYACTION”就行,但是实际上,系统在使用隐式Intent的时候,会自动帮我们添加上“android.intent.category.default”,所以——实际上所有需要被隐式Intent启动的activity,都要加上这一段声明,否则就会启动不了并提示无法匹配该Intent的错误:

5d94173a29d8f033617e2bf71c9ecdc4.png

如果你要隐式启动的那个活动是程序最先启动的那个activity,

即声明了,

就可以不用写的声明了,

(在这里LAUNCHER,就是你打开程序,最先启动的那一个Activity。)另外,LAUNCHER一定要配合action MAIN一起使用,否则不会启动,即:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值