Intent的七大属性

一、Intent对象介绍:

1、Intent用于封装程序的“调用意图”。俩个Activity之间传递数据的话,需要把数据封装成bundle对象,实现两个activity之间对象的数据交换

2、Intent还是各种应用程序组件通讯的重要媒介。不管是启动一个Activity,service还是BroadCastReceicer,Android均使用同一的Intent对象来封装这种“意图”。

3、Intent对象包括七大属性:ComponentName、  Action 、 Category 、 Data  Type、  Extra  、Flag

*Action作为标识符,代表一个Intent,当一个Activity需要外部协助处理的时候,就会发出一个Intent。如果一个程序能完成相应功能,只要在intent-filter加上这个这个intent就可以了

*Data保存需要传递的数据

*Extras保存需要传递的额外数据。

二、常用Action属性常量:

Intent对象不仅可以启动本应用的程序组件,也可以启动Android系统的其他应用的组件,包括系统内置的程序组件(需要设置权限)。

  •   ACTION_MAIN:(android.intent.action.MAIN)Android程序入口
    • 每个Android应用必须且只能包含一个此类型的Action声明。【如果设置多个,则哪个在前,执行哪个。】
  •   ACTION_VIEW: (android.intent.action.VIEW) 显示指定数据
  •   ACTION_EDIT: (android.intent.action.EDIT) 编辑指定数据。
  •   ACTION_DIAL: (android.intent.action.DIAL) 显示拨号面板。
  •   ACTION_CALL: (android.intent.action.CALL) 直接呼叫Data中所带的号码。
  •   ACTION_ANSWER: (android.intent.action.ANSWER) 接听来电。
  •   ACTION_SEND: (android.intent.action.SEND) 向其他人发送数据(例如:彩信/email)。
  •   ACTION_SENDTO:  (android.intent.action.SENDTO) 向其他人发送短信。
  •   ACTION_SEARCH: (android.intent.action.SEARCH) 执行搜索。
  •   ACTION_GET_CONTENT: (android.intent.action.GET_CONTENT) 让用户选择数据,并返回所选数据。

三、Category属性:

Category属性为Action增加了额外的附加类别信息。CATEGORY_LAUNCHER意味着在加载程序的时候Acticity出现在最上面,而CATEGORY_HOME表示页面跳转到HOME界面

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGOTY_HOME); 
startActivity(intent);
Category属性的常量
  •    CATEGORY_DEFAULT: (android.intent.category.DEFAULT) Android系统中默认的执行方式,按照普通Activity的执行方式执行。
  •   CATEGORY_HOME: (android.intent.category.HOME) 设置该组件为Home Activity。
  •   CATEGORY_PREFERENCE: (android.intent.category.PREFERENCE) 设置该组件为Preference。
  •   CATEGORY_LAUNCHER: (android.intent.category.LAUNCHER) 设置该组件为在当前应用程序启动器中优先级最高的Activity,通常与入口ACTION_MAIN配合使用。
  •   CATEGORY_BROWSABLE: (android.intent.category.BROWSABLE) 设置该组件可以使用浏览器启动。

四、Data属性:

1、Data属性通常为Action属性提供操作数据,Data属性的值是个uri对象。

 Uri的格式如下:scheme://host:port/path

   2、系统内置的几个Data属性常量:
  •   tel://:号码数据格式,后跟电话号码。
  •   mailto://:邮件数据格式,后跟邮件收件人地址。
  •   smsto://:短息数据格式,后跟短信接收号码。
  •   content://:内容数据格式,后跟需要读取的内容。
  •   file://:文件数据格式,后跟文件路径。
  •   market://search?q=pname:pkgname:市场数据格式,在Google Market里搜索包名为pkgname的应用。
  •   geo://latitude, longitude:经纬数据格式,在地图上显示经纬度所指定的位置。
3、Intent利用Action和Data来启动Android内部程序。

Intent intent=new Intent(); 
intent.setAction(Intent.ACTION_CALL);  
//intent.setAction("android.intent.action.CALL");  //以下各项皆如此,都有两种写法。
intent.setData(Uri.parse("tel:1320010001"));
startActivity(intent);

//调用拨号面板:
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL); 
intent.setData(Uri.parse("tel:1320010001"));
startActivity(intent); 

//调用拨号面板:
Intent intent=new Intent();
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("tel:1320010001"));
startActivity(intent); 

(二)、利用Uri打开浏览器、打开地图等:
Uri uri = Uri.parse("http://www.google.com"); //浏览器 
Uri uri=Uri.parse("geo:39.899533,116.036476"); //打开地图定位 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);

五、Type属性:

1.Type属性用于指定Data所指定Uri对应得MIME类型。MIME只要符合“abc/xyz”这样的字符串格式即可。

2.Intent利用Action、Data和Type属性启动Android内置主件。

播放视频

Intent intent=new Intent()

Uri uri=new Uri("file:///sdcard/media.mp4");

intent.setAction(Intent.ACTION_VIEW);

intent.setDataAndType(uri,"Vider/*");

startActiay(intent);

六、Extra属性

1.通过intent.putExtra(键,值)的形式在Activity之间传值。

2.Intent利用Action,Data和Type,Extra属性启动Android系统内置组件代码。

(四)、调用发送短信的程序 
Intent  intent  = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setType("vnd.android-dir/mms-sms"); 
intent.putExtra("sms_body", "信息内容..."); 
startActivity(intent);

//发送短信息 
Uri uri = Uri.parse("smsto:13200100001"); 
Intent  intent  = new Intent(); 
intent.setAction(Intent.  ACTION_SENDTO );
intent.setData(uri);
intent.putExtra("sms_body", "信息内容..."); 
startActivity( intent ); 

//发送彩信,设备会提示选择合适的程序发送 
Uri uri = Uri.parse("content://media/external/images/media/23"); //设备中的资源(图像或其他资源) 
Intent intent = new Intent(); 
intent.setAction(Intent.  ACTION_SEND );
intent.setType("image/png"); 
intent.putExtra("sms_body", "内容"); 
intent.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(it);

(五)、发送Email:
Intent intent=new Intent(); 
intent.setAction(Intent.  ACTION_SEND );
String[] tos={"android1@163.com"}; 
String[] ccs={"you@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"));


    Intent intent = new Intent(Intent.ACTION_SEND);
    String[] tos = { "mobileservice@ablesky.com" };
    intent.putExtra(Intent.EXTRA_EMAIL, tos);
    intent.putExtra(Intent.EXTRA_TEXT, getPhoneParameter());
    intent.putExtra(Intent.EXTRA_SUBJECT, "Android日志");
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(cacheDir));
    intent.setType("message/rfc882");
    intent.setType("plain/text");
    Intent.createChooser(intent, "请选择邮件发送软件");
    startActivity(intent);  


intent.setAction(android.provider.Settings.ACTION_SETTINGS);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值