Intent 意图

功能intent主要是用于在activity和service组件间进行数据的传递,起着一个中间桥梁的通信作用

类型主要分为

1、显式intent:来启动指定的组件如从一个activity跳转到另外的activity并传递数据,

1 Intent intent=new Intent(Activitymain.this,Activity01.class);
2 startActivity(intent);

     也可以用setClass(Context,Class)来指定目标组件

1 Intent intent=new Intent();
2 intent.setClass(this,Activity01.class);
3 this.startActivity(intent);

    还可以使用Component(ComponentName)来指定目标组件

Component cn=new Component("com.android.myAction");
Intent intent=new Intent();
intent.setComponent(cn);
this.startActivity(intent);

2、 隐式intent:没有明确的指出目标组件,需要系统帮助寻找与intent的意图相匹配的组件,如打开某文件时跳出多个程序让你挑选。

      intentFilter(意图过滤器):把不需要的intent的过滤掉,找到相同的intent。

      方法:通过配置文件进行指定,通过intent-filter标签来完成

<intent-filter>
     <action android:name="android.intent.action.MAIN"/>
     <category android:name="android.intent.category.LAUNCHER"/>//启动系统
</intent-filter>

action:代表该intent的所要完成的一个抽象动作,其实就是一个字符。

category:为action增加额外的附加信息。

如下程序研究:

在主程序的代码为:

1 bn.setOnClickListener(new OnClickListener(){
2   Intent intent=new Intent();
3   intent.setAction(ActionAttr.DASOU_ACTION);
4   startActivity(intent);
5 });

上述代码中要创建常量

final static String DASOU_ACTION="org.dasou.intent.action.DASOU_ACTION";

上面代码中没有显式启动哪个Activity,则要在需要启动的Activity的配置文件中进行配置

<intent-filter>
     <action android:name="org.dasou.intent.action.DASOU_ACTION">//
<action android:name="dasou"/>//指定activity能响应action属性为dasou的intent
<category android:name="android.intent.category.DEFAULT">//指定该action能响应category的属性为指定字符的intent
</intent-filter>

data:数据,指的是动作相关的数据的资源标识和数据的MIME类型。

flags:标志,Intent对象有各种标记,很多都是用于指示Android系统如何启动Activity(如,Activity应该属于哪个任务),以及启动后如何处理(如,它是否属于最近的Activity列表)。    

 下一页:intent调用系统组件

原文地址:https://www.cnblogs.com/DASOU/p/3148823.html