Android中的Intent

来源:互联网 发布:北平无战事曾可达 知乎 编辑:程序博客网 时间:2024/06/06 08:30

Intent是一种运行时绑定机制,它能在程序运行的过程中绑定2个不同的组件。通过Inent,你的程序可以向android表达某种意愿,也就是请求。Android会根据不同的请求来选择不同的组件进行响应。


Intent对象包含了以下信息:

Component Name(组件名)   启动哪一个Activity

Action(行为) 你要Activity做什么

Data(数据) 向另一个Activity传送什么数据

Caegory(类别)

Extras(额外) 存放键值对

Flags(标志)



一、通过Intent实现拨打号码,发送短信

Button btn_call=null;
Button btn_msg=null;

btn_call=(Button)this.findViewById(R.id.btn_call);
btn_msg=(Button)this.findViewById(R.id.btn_msg);

........

//设置按钮点击事件,点击该按钮拨打号码
//使用拨号,发短信要取得相应权限,在AndroidMainfest.xml中设定
btn_call.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//意图
Intent intent = new Intent();
//设置为打电话的动作
intent.setAction(Intent.ACTION_CALL);
//设置电话号码,电话号码以tel:开头
intent.setData(Uri.parse("tel:137
xxxxxxxxxxx"));
//启动Intent
startActivity(intent);

}
});

//设置按钮点击事件,点击该按钮发送短信
//同样要添加权限
btn_msg.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
//发送短信的动作
intent.setAction(Intent.ACTION_SENDTO);
//发送短信以smsto:开头
intent.setData(Uri.parse("smsto:137
xxxxxxx"));
//短信的内容,第一个参数不是随便写的,哪个代表的是短信,第二个参数是短信内容
//经测试这样子是自动打开短信发送界面,里面填写好了内容和要发送的号码,然后手动点击发送才成功
//这边是简单的例子
intent.putExtra("sms_body", "Hello,welcom 中国");
startActivity(intent);
}
});

 二、通过Intent实现另外一个Activity的跳转


//通过intent实现二个Activity的跳转
btn_change.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent =new Intent();
//设置要跳转的Activity,第二个参数便是要跳转的类
intent.setClass(MainActivity.this,SecondActivity.class );
//也可以在第一个Activity中传递一些参数给下一个Activity,可要可不要
//传完在第二个Activity中进行接收,参数1是键值,参数二是内容

intent.putExtra("str", "Intent yangjinze");
//启动
//startActivity(intent);
//这是带返回值的启动Activity,requestCode为上面定义,为1,
//当第二个参数>=0时打开的Activity返回时会进入onActivityResult
startActivityForResult(intent, requestCode);
}
});

         .....

       //  重写onActivityResult可以对新打开的Activity关闭时的返回值进行处理:

          //requestCode为startActivityForResult中设定的
//resultCode为新打开Activity中由setResult(resultCode, intent);设定的
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

//进行判断返回值
//if(requestCode==resultCode){
if(requestCode==1){
if(resultCode==SecondActivity.resultCode){
//将前一个窗口关闭后的返回值显示出来
Bundle bundle=data.getExtras();
String str=bundle.getString("back");
Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
}
}
}



        //这是新打开的SecondActivity

                 btn=(Button) this.findViewById(R.id.btn);
//这边是接收上一个Activity中传过来的参数
//通过getIntent()方法来得到第一个Activity中传过来的一个intent
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String string =bundle.getString("str");
Toast.makeText(this, string, Toast.LENGTH_LONG).show();

//设置按钮点击函数
//退出该Activity并返回一个值给前一个Activity
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
//设置返回的内容和键值
intent.putExtra("back", "this is back");
//设置返回的一些判断值
setResult(resultCode, intent);
//结束该Activity,返回上一个Activity
finish();
}
});


0 0