Android05之Intent专题

来源:互联网 发布:js不允许输入特殊字符 编辑:程序博客网 时间:2024/04/29 10:15
Intent,翻译过来为“意图”,我的理解为:就是告诉当前Activity下一步要做什么,表现出的一种意向。
so,Intent的大致功能有:
①启动活动、启动服务,启动广播等,今天只针对Activity,其它日后研究
②实现Activity之间的跳转,也就是在当前Activity下,启动另一个Activity
③Activity之间的数据交互

使用Intent实现以上功能:但Intent分为显示Intent和隐Intent
  隐式跟显式的区别:举个例子
小李:170cm
小张:160cm
小王:165cm
小赵:175cm
显式Intent:直接告诉要找的人是小李
隐式Intent:比较模糊,告诉条件,要找的人有170cm,找出符合条件的为小李,170cm只是一个属性,条件,隐式有三个:active(动作)、category(不清楚,我就当作一个属性)、data(数据,可以理解为传递数据的一个工具)
①显式Intent:
        //显式创建Intent,参数一:当前Activity,参数二:要启动的Activity
       Intent intent = new Intent("Context context","...class");
        //启动Activity
        startActivity(intent);
图片

②隐式Intent
一、Activity之间的跳转
      通过三个属性来查找符合条件的对象,active、category、data
前提环境:有一个MainActivity,自己创建了一个SecondActivity,
①在AndroidManifest.xml中注册了SecondActivity,
②<intent-filter></intent-filter>中配置属性
    <active Android:name = "ACTIVE_START"/>   //自己取名字
<category Android:name = "android.intent.category.DEFAULT"/> //android.intent.caetgoty.(...) 很多选项,一般DEFAULT,具体不清楚,
<data />//可有可无,用来限制data的数据类型
图片

//创建Intent
Intent intent = new Intent();
//设置动作
intent.setActive("ACTIVE_START");
//启动时自动加载了catagory,所以可以不用写
startActivity(intent);


二、Activity间单向传递数据
如以下图所示,putExtra方法将数据用键值对的形式存储在intent中,
图片

取出数据:
    Intent intent = getIntent();
intent.getgetStringExtra("Data");
这样就得到了数据

三、Activity双向传递数据
  前提环境不变
其他都一样,启动intent的方法不同,

//创建Intent
Intent intent = new Intent();
//设置动作
intent.setActive("ACTIVE_START");
//
startActivityForResult(intent,1);

SecondActivity返回数据
    Intent intent1 = new Intent();
     intent1.putExtra("Data1", "Hello Main!!");
     setResult(RESULT_OK, intent1);

③返回的数据在MainActivity中的一个onActivityResult方法中,重写此方法
//requestCode:请求参数,就是前面启动带intent活动是的“1”
//resultCode:结果参数,就是看返回成功与否,RESULT_OK为成功,
//data:数据,传递的数据存在在其中。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch(requestCode){
        case 1:
            if(resultCode == RESULT_OK){
                Log.d("Main", data.getStringExtra("Data1"));
            }
            break;
        default:
        }
    }

这里只是介绍了自己定义的活动,intent(意图)中还可以指向系统自带的一些Activity,比如,拨号器,短信等,下面就介绍一下如何使用系统自带的拨号器
//创建Intent
Intent intent = new Intent();
//设置拨号器的动作
intent.setActive(Intent.ACTION_CALL);
//直接告诉拨号器要拨打的号码,number为要拨打的号码,一般会提前写好
intent.setData(Uri.parse("tel:"+number));
//启动
startActivity(intent);

提醒:启动系统中的一些Activity,需要设置权限,否则启动不成功
在AndroidManifest.xml中配置权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
这样就成功了~

总结:Intent应该挺强大的,可以做一个自己的拨号器,可以做一个自己的短信发送器,或者做一个恶意的后台偷偷发短信的小Demo,以后学到了继续补充Intent。

0 0
原创粉丝点击