使用Intent和IntentFilter进行通信,Intent分为显示意图和隐式意图,显示意图不用配置。
一般在同一个应用程序优先使用显示意图,因为效率较高。
Intent是Android用于封装的意图,不管想启动一个新的Activity还是Service或者是BroadcastReceiver,都需要
Intent来作为桥梁。
Intent包含了七大属性:
Component,Category,Action,Data,Type,Extra和Flag,其中Component用于明确指定需要启动的目标组件。
Extra用于携带需要交换的数据。
以下是详细的介绍:
//显示Intent 和隐式Intent。
启动新的Activity。
//注意:新的activity 一定要在Manifest文件里进行配置
Intent intent = new(MainActivity.this,SecondActivity.class);//.class后缀不能忘记
startActivity(intent);
一个显示Intent对象最多只能包含一个Action属性,却可以包含多个Category属性。
setAction(String str); addCategory(String str);
显示意图必须指定开启的组件的具体信息(包名 组件名 组件的Class)。
可以用intent来调用系统的其他应用。如网络设置本地相册,注意添加权限。
Intent intent = new intent("packagename","classname ");
startActivity(intent);//注意配置Activity。
//小华华的视频讲的很不错。
显示意图不用配置。
隐式意图:显示意图的耦合性比较差,
描述动作的行为。
Intent intent = new Intent();
intent.setAction();//系统默认了很多动作类型。
intent.setData(Uri data);
startActivity(intent);
//需要
//一个activity 可以配置多个intent-filter,只要满足其中的一个意图就可以调用。
一个隐式intent还可以设置多个动作 ,只要满足其中的一个那么就可以调用。
同一个应用程序里面,自己激活自己的东西,推荐使用显示意图,效率高。
不同的程序里,激活别人的应用,或者是让自己的某一个界面希望被别人激活
推荐使用隐士意图。
使用隐士意图时
1.查询系统里面所有的activity看看是不是有满足条件的activity。
2.如果只有一个则直接使用,但是如果有多个符合的activity那么列表显示
3.如果没有那么抛出异常。activity not found exception.
从一个activity往另外一个activity 里传人数据:
Intent intent = new Intent(this, secondActivity.class);
intent.putExtra("name",name);
//八大基本的数据都能传递过去包括String类型,key-values的形成存储数据
startActivity(intent);
--------------------------------------------------------------------------
在secondActivity的onCreate()里:
Intent intent = getIntent();
String name = intent.getStringExtra("name");