从字面上来说,Intent是意图的意思。你想做什么,可以告诉Intent,它可以帮你干活。
Intent是安卓提供的一种运行机制,它可以进行不同页面切换,数据传递,调用外部组件等操作。可以理解为一个不同组件之间的媒介的角色。
Intent的属性有Action(动作),Data,Category(分类),Type(类型),Compent,Extra(扩展)等。其中Action最常用。
常量 | 含义 |
---|---|
Intent.ACTION_MAIN | activity为一个程序的开始 |
Intent.ACTION_GET_CONTENT | 用户可以选择图片、文件等多媒体数据 |
Intent.ACTION_SEND | 发送邮件 |
Intent.SMS_RECEIVED | 接收邮件 |
Intent.ACTION_AMSWER | 处理呼入的电话 |
Intent.ACTION_CALL_BUTTON | 按拨号键 |
Intent.ACTION_CALL | 呼叫指定的电话号码(直接拨打) |
Activity之间的传值可以通过intent来完成。
通过以下代码来创建一个Intent。
Intent intent = new Intent(当前的activity.this,另一个activity.class);//此intent的目的是从当前的activity跳转到另一个activity。
当然,也有另外一种方法,是等价的。
Intent intent = new Intent();
intent.setClass(当前的activity.this,另一个activity.class);
通过以下代码来向intent中放入数据。
这里需要引入一个类Bundle,中文意思是糖葫芦,把想传递的数据以key-value的形式穿成糖葫芦,扔给另一个Activity。
Bundle bundle = new Bundle();
bundle.putString("key","value");
//存放数据,同时bundle还有其他方法,例如remove(String key)移除指定的key
//getString(String key) 获取指定key的值 等方法。
intent.putExtras(bundle);//数据对象坐上intent的车,intent帮忙给运过去
然后通过以下代码来启动另一个activity,同时也传值过去
startActivity(intent);//切换到另一个Activity
另一个Activity 通过这种方式取到传过来的值。
Bundle bundle = this.getIntent().getExtras();
String str = bundle.getString("key");
此外,还有intent另外的一些使用方式,例如拨打电话等。
Uri call= Uri.parse("tel:88888888");
Intent intent = new Intent(Intent.ACTION_DIAL, call);