Intent的七大属性:

本文详细探讨了Intent的五个核心属性,包括Action、Component、Data、Category和Type,结合具体例子深入理解它们在Android应用程序中的作用和使用场景。

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


1.ComponentName(组件):目标组件

2.Action(动作):意图动作

3.Category(类别):表示动作的类别

4.Data(数据):表示动作要操作的数据

5.Type(数据类型):对于data范例的描写

6.Extras(扩展信息):扩展信息

7.Flag(标志位):期望这个意图的运动模式


1.ComponentName
//activity 之间跳转
Intent intent=new Intent();
ComponentName componentName=new ComponentName(this,SecActivity.class);
intent.setComponent(componentName);
startActivity(intent);

这种启动方式等同于:
Intent intent=new Intent(this,secActivity.class);
startActivity(intent);
    或
Intent intent=new Intent();
intent.setClass(this,secActivity.class);
startActivity(intent);

//跳转到另一个app(跨应用跳转必须是入口级activity且手机中安装了该应用)
ComponentName componentName2=new ComponentName("包名","手机上安装路径");
intent.setComponent(componentName2);

2.Action    ---ACTION_CALL,ACTION_MAIN,ACTION_EDIT等
//Intent隐式意图--通过action属性查找组件
intent.setAction("包名.SecActivity");
//intent.addCategory("android.intent.category.DEFAULT");//默认


在清单文件中设置:
<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
//"android.intent.category.LAUNCHER"设置该组件是当前应用程序中优先级最高activity,通常与入口ACTION_MAIN配合使用。

//跳转到home主屏幕页面
intent.setAction(Intent.ACTION_MAIN);//="android.intent.action.MAIN"
intent.addCategory(Intent.CATEGOTY_HOME);



3.Category(和 action 结合使用)  为action 增加额外的附加类别信息。

4.Data   ---执行的动作是Uri和MIME类型,//MIME:指播放文件类型  例如image/*(*号包括image的所有格式) 、  video/*(包括video的所有格式)
//直接拨打电话
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086"));//还要注册打电话的权限  users Permission  permission.CALL_PHONE"
//显示拨号面板
intent.setAction(Intent.ACTION_DIAL);//会停留在拨号界面,不会拨出去
intetn.setData(Uri.parse("tel:10086"));
//Uri:统一资源标识符
//Url:统一资源标识符 是Uri的子集  更具体

//打开浏览器
//记得添加网络权限 permission.INTERNET"
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://wwww.baidu.com"));
//打开浏览器网页
Uri data=Uri.parse("http://www.baidu.com");
intent.setDataAndType(data,"text/html");

//打开设置界面
intent.setAction("android.settings.SETTINGS");

//打开WiFi设置界面
intent.setAction("android.settings.WIFI_SETTTINGS");

//打开联系人界面
intent.setAction("com.android.contacts.action.LIST_CONTACTS");

//发送短信--先跳到编辑界面,点击发送才能发送(在应用程序中编辑发送人,短信内容)
intent.setAction(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:10086"));//发給谁
intent.putExtra("sms_body","短信内容");//短信内容.key值固定 "sms_body"

//发送彩信,设备会提示选择合适的程序发送
intent.setAction(Intent.ACTION.SEND);
intent.setType("image/*");
intent.putExtra("sms_body","内容");
intent.putExtra(Intent.EXTRA_STREAM,Uri.parse("content://media/external/images/media/11"));//设备中的资源(图像等)
startActivity(intent);

//发送Email
intent.setAction(Intent.ACTION_SEND);
String[] tos="android1@163";
String[] ccs="hehe@yahoo.com";
intent.putExtra(Intent.EXTRA_EMAIL,tos);
intent.putExtra(Intent.EXTRA_CC,ccs);
intent.putExtra(Intent.EXTRA_TEXT,"the email body text");
intent.putExtra(Intent.EXTRA_SUBJECT,"the email subject text");
intent.setType("message/rfc822");
startActivity(Intent.createChooser(intent,"Choose Email Client"));
 //   EXTRA_CC:存放邮件抄送人地址的字符串数组。
 //   EXTRA_EMAIL:存放邮件地址的字符串数组。
 //   EXTRA_SUBJECT:存放邮件主题字符串。
 //   EXTRA_TEXT:存放邮件内容。


//打开图片---需要路径
intent.setAction(Intent.ACITON_VIEW);
intent.setDataAndType(Uri.fromFile(new File("图片路径")),"image/jpg");//可以直接  * 号  所有的image格式

//打开网络图片
Intent intent=new Inent(Intent.ACTION_VIEW,Uri.parse("网络图片地址"));
startActivity(intent);

//打开相册
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
Intent wrapperIntent = Intent.createChooser(intent, null);
startActivityForResult(wrapperIntent,100);

//打开相机
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,100);

//打开音频文件
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("音频路径")),"audio/*");//Uri.parse("file:///sdcard/media/mp4");

//打开视频
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("视频路径")),"video/*");

//打开文本文件
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("文本路径")),"text/*");

//打开录音机
intent.setAction(Media.RECORD_SOUND_ACTION);//android.privoder.audio注意要导audio下的包
startActivity(intent);

当data是http协议的时候,系统会自动去查找可以打开http协议的activity,这个时候如果手机安装了多个浏览器,系统会自动弹出多个浏览器供我们选择。
<activity  
        android:name=".HttpActivity"  
        android:label="@string/title_activity_http" >  
        <intent-filter>  
            <action android:name="android.intent.action.VIEW" />  
      
            <category android:name="android.intent.category.DEFAULT" />  
      
            <data  android:scheme="http" />  
        </intent-filter>  
    </activity>  


5.Type

以上栗子中提到用法。相结合


6.Extras   Extra在activity指间传递基本数据类型,

7.Flag  ---Flag属性用于设置activity的启动模式。
Intent intent=new Intent(this,secActivity.class);
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);//---相当于singleTask,有一点不同栈中存在也不复用,新建
//"Intent.FLAG_ACTIVITY_SINGLE_TOP"//相当于singleTop



Enviroment.getExternalStorageDirectory();//获取外部存储的根目录
Enviroment.getExternalStoragePubicDiectory(Enviroment.DIRECTORY_DOWNLOADS);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值