Android开发之深入理解Intent

来源:互联网 发布:知世与艾利欧 艾知 编辑:程序博客网 时间:2024/04/30 01:28

Android发之深入理解Intent

前边我们提到intent在Activity之间传值点击查看博文  

今天详细介绍Intent的相关属性:

Intent的七大属性:

  1.intent的作用:

      a,包装Android组件

      b,启动Activity,启动service,启动广播

      c,组件之间相互传值

  2.显示启动Activity的属性      //显示是指要启动的Activity是固定的

     ComponentName    包装Android组件

     三种写法:

               new  Intent(getApplicationContext(),BActivity.class);

等同于

              Intent intent=new Intent();

            ComponentName  cn=new  ComponentName(getApplicationContext(),BActivity.class);

            intent.setClass(cn);//设置意图包装的组件

第三种写法

            intent.setClass(getApplicationContext(),BActivity.class);

   3.隐示启动Activity的属性:

   需要通过Action来指定启动的Activity ,这种Activity在注册时必须申明

                      <intent-filter>

                                <action android :name="自定义的action名称"/>       //名称必须在整个Android应用系统中唯一  一般以类的全限定名

                      </intent-filter>

Action 属性一般和category一起使用   category用来标示Action启动组件的类型  一般是default类型

android.intent.category.DEFAULT   代表是普通的Activity组件

代码: 

 a.  Intent intent =new intent(“自定义Action的名称”);

 b.  Intent  intent =new Intent();

   intent.setAction(“自定义Action的名称”);

在Android.menifest.xml中配置

  <activity            android:name=".Activity02"            android:label="第二个页面" >        </activity>                <!-- 可以使用隐式方式启动组件 -->         <activity            android:name=".Activity03"            android:label="第三个页面" >                         <intent-filter>                <action android:name="com.example.intent01.Activity03" />                <category android:name="android.intent.category.DEFAULT" />            </intent-filter>                     </activity>
显示启动:
// 显示方式启动Activity02Intent intent = new Intent();//intent.setClass(getApplicationContext(), Activity02.class);intent.setComponent(new ComponentName(getApplicationContext(), Activity02.class));        startActivity(intent);
隐式启动:

startActivity(new Intent("com.example.Intent01.Activity03"));  //这是第一种写法Intent intent=new Intent();    intent.setAction("com.example.Intent01.Activity03");    startActivity(intent);   //这是第二种写法

4.data属性:

指定Action之后,将必须的数据设置在此属性中   比如打电话要提供电话号码

对于不同的数据有不同的数据格式  如电话号码  tel:110

5. type属性(mimetype):如果data属性的值是文件路径  必须声明type属性来指定文件类型

如:文本文件 :  text / *

6.extra  扩展属性:除了必要的数据以外的扩展数据

常用于Intent传值

7.flag 属性:影响启动组件的特性(运行模式)

常用位置:在广播接收器内,启动Activity组件时,必须设置flag属性:且为Intent.FLAG_NEW_TASK

intent.setFlags(Intent.FLAG_NEW_TASK);

public void call(View view) {Intent intent=new Intent(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:10086"));  //Uri  统一资源标识符startActivity(intent);}public void internet(View view) {       Intent intent=new Intent(Intent.ACTION_VIEW);  //查看页面  根据数据类型判断   如果数据类型是网址  就调用浏览器       intent.setData(Uri.parse("http://www.qq.com"));       startActivity(intent);}public void share(View view) {Intent intent=new Intent(Intent.ACTION_SEND);intent.setType("text/*");//选择类型  这里指文本类型intent.putExtra(Intent.EXTRA_TEXT, "这是分享的内容。。。");startActivity(intent);}

分别是打电话,浏览网页,分享  三个小功能


相关的功能还有很多,要自己多练习,多做才能记住熟练运用





 




0 0
原创粉丝点击