对于android中Intent的action、category、data的补充说明

今天发了一篇关于android中Intent的文章,写完后感觉写的不是很清楚,在这对Intent隐式意图中的action、category、data单独做出说明

先写一个意图过滤器

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:scheme="aaa" android:host="www.zl.com" android:port="666" android:path="/aaa"/>
</intent-filter>
  • 其中action 为一个动作,可以理解为是这个意图的名字,当有程序发出一个意图的时候就会和所有程序的清单文件匹配,最先找action和意图的action相同的activity再做后面的匹配。系统内置了很多action,也可以自定义,一般为了避免重复用包名+类名。
  • data为数据类型,对应的URI为 aaa://www.zl.com:666/aaa 其中path前面一定要加/,在代码中写为
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this,Main2Activity.class);
    intent.setAction("android.intent.action.VIEW");
    intent.setData(Uri.parse("aaa://www.zl.com:666/aaa"));
    startActivity(intent);
}
  • category为意图的分类,用来设置哪类应用可以调用。如果使用隐式意图的时候intent会自动添加一个category,所以意图过滤器中应该添加一个
    <category android:name="android.intent.category.DEFAULT"/>,否则会匹配不到

当一个意图可以和以上全部参数匹配的时候就能调用该activity

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值