【Android学习笔记】Intent的基本作用

来源:互联网 发布:人体工学椅 知乎 推荐 编辑:程序博客网 时间:2024/05/16 02:35

看了传智播客的视频(50+个),对安卓刚刚有了一定的了解。

现在正在看mars的视频教程,算是复习一下。希望跟我有同样梦想的朋友,大家一起加油!


一个Intent对象包含了一组信息:

1.Component name

记录Intent对象要启动的哪个组件,可以是Activity,也可以是Service,也可以是BroadcastReceiver

2.Action

指定组件要做哪些动作

比如官方文档就设置了一些Action常量,ACTION_CALL,  ACTION_MAIN,  ACTION_BATTERY_LOW等等


3.Data

一个activity向另外的Activity传输的信息(URL和MIME类型)

比如action是ACTION_CALL,那么data就应当以tel:开头,后面加上拨打的号码

setData()方法:只用来指定data的URI

setType()方法:只用来指定data的MIME类型

如果又要设置URI又要指定MIME,不能去依次调用上面的方法,需要用setDataAndType()

4.Category

指定要启动的组件的类型,可以通过category或者action,根据AndroidManifest.xml中各个Activity定义的intent-filter,来自动查找,启动隐式意图(不用指定组件的class)

5.Extras

额外的信息,是一些键值对。

例如:

Intent intent=new Intent("......");

intent.putExtra("name","xiaojing");

startActivity(intent);


这样在另一个Activity中,这样就能通过intent对象,来得到name这个属性值:

Intent intent=getIntent();

String name=intent.getStringExtra("name");


还有一种在Intent对象中存入额外信息的方法是:通过Intent中的Bundle对象

Bundle bundle=intent.getBundleExtra();

bundle.putString("name","xiaojing");

6.Flags

关于intent的flag问题。发现一篇博客,解释的挺好的,感谢原作者的分享

出处:http://www.cnblogs.com/mybkn/ 

android:intent flags

   一、Activity和Task(栈)的关系
  Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最低端。从Task中取出东西(Activity)则是从最顶端取出,也就是说最先取出的是最后添加的东西(Activity),一次类推,最后取出的是第一次添加的Activity,而Activity在Task中的顺序是可以控制的,那则在Activity跳转时用到Intent Flag
 二、界面跳转和服务的启动都会用到Intent,现在介绍Intent Flag是关于Activity的跳转
  Intent intent = new Intent(this,xxx.class);

  //如果activity在task存在,拿到最顶端,不会启动新的Activity
  intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);


  //如果activity在task存在,将Activity之上的所有Activity结束掉
  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);


  //默认的跳转类型,将Activity放到一个新的Task中
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


  //如果Activity已经运行到了Task,再次跳转不会在运行这个Activity
  intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);



使用Intent发送消息

Uri uri=Uri.parse("smsto://13916052547");

Intent intent=new Intent(Intent.ACTION_SENDTO,uri);

intent.putExtra("sms_body","SMS content:Hello");

startActivity(intent);

//效果是,会开启短信发送的应用页面,并自动填好了短信接收方的号码和短信正文的内容

//所以intent对象能访问不同App的Activity

0 0
原创粉丝点击