Android开发之深入理解Intent

本文详细介绍了Android中Intent的七大核心属性及其应用场景,包括组件启动、数据传递等,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
显示启动:
// 显示方式启动Activity02
		Intent 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);
	}

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


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





 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值