对于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

猜你喜欢

转载自blog.csdn.net/qq_28859405/article/details/52565566
今日推荐