Android之Intent

使用IntentIntentFilter进行通信,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");

原文地址:https://www.cnblogs.com/taotaomajia/p/4475634.html