Anroid之Intent几个重要属性详解

来源:互联网 发布:计算机图论算法 编辑:程序博客网 时间:2024/05/16 18:20

 Intent主要有以下四个重要属性,它们分别为:

    Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。

    Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。

    Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。

    Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

  四个属性各自的常用值如下所示:

  Action:

      ACTION_MAIN:Android Application的入口,每个Android应用必须且只能包含一个此类型的Action声明。 

    ACTION_VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据。

    ACTION_EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据。 

    ACTION_DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码。 

    ACTION_CALL:直接呼叫Data中所带的号码。 

    ACTION_ANSWER:接听来电。 

    ACTION_SEND:由用户指定发送方式进行数据发送操作。

    ACTION_SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作。 

    ACTION_BOOT_COMPLETED:Android系统在启动完毕后发出带有此Action的广播(Broadcast)。 

    ACTION_TIME_CHANGED:Android系统的时间发生改变后发出带有此Action的广播(Broadcast)。 

    ACTION_PACKAGE_ADDED:Android系统安装了新的Application之后发出带有此Action的广播(Broadcast)。 

    ACTION_PACKAGE_CHANGED:Android系统中已存在的Application发生改变之后(如应用更新操作)发出带有此Action的广播(Broadcast)。 

    ACTION_PACKAGE_REMOVED:卸载了Android系统已存在的Application之后发出带有此Action的广播(Broadcast)。  

  Category:

      CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。 

    CATEGORY_HOME:设置该组件为Home Activity。

    CATEGORY_PREFERENCE:设置该组件为Preference。 

    CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。 

    CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。 

    CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。

  Extras:

      EXTRA_BCC:存放邮件密送人地址的字符串数组。 

    EXTRA_CC:存放邮件抄送人地址的字符串数组。

    EXTRA_EMAIL:存放邮件地址的字符串数组。 

    EXTRA_SUBJECT:存放邮件主题字符串。 

    EXTRA_TEXT:存放邮件内容。 

    EXTRA_KEY_EVENT:以KeyEvent对象方式存放触发Intent的按键。  

    EXTRA_PHONE_NUMBER:存放调用ACTION_CALL时的电话号码。   

   Data:

      tel://:号码数据格式,后跟电话号码。 

    mailto://:邮件数据格式,后跟邮件收件人地址。

    smsto://:短息数据格式,后跟短信接收号码。

    content://:内容数据格式,后跟需要读取的内容。 

    file://:文件数据格式,后跟文件路径。

    market://search?q=pname:pkgname:市场数据格式,在Google Market里搜索包名为pkgname的应用。

    geo://latitude, longitude:经纬数据格式,在地图上显示经纬度所指定的位置。

 

几个Action、Data属性的组合

ACTION_VIEW      content://com.android.contacts/contacts/1   显示标识为1的联系人的信息

ACTION_EDIT content://com.android.contacts/contacs/1  编辑标识为1的联系人的信息

ACTION_DIAL content://com.android.contacts/contacs/1 显示向标识为1的联系人拨号界面

ACTION_VIEW   tel:123  显示向指定号码123拨号的界面

ACTION_DIAL  tel:123  显示向指定号码123拨号的界面

ACTION_VIEW content://contacts/people/  显示所有联系人列表的信息,通过这种组合可以非常方便的查看系统联系人

package com.android.xiong.actiondata;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button bt1,bt2,bt3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bt1=(Button)findViewById(R.id.bt1);bt2=(Button)findViewById(R.id.bt2);bt3=(Button)findViewById(R.id.bt3);bt1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//创建IntentIntent intent=new Intent();String data="http://www.qq.com";//根据指定的字符串解析出Uri对象Uri uri=Uri.parse(data);//为Intent设置Action属性intent.setAction(Intent.ACTION_VIEW);//设置Data属性intent.setData(uri);startActivity(intent);}});bt2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setAction(intent.ACTION_EDIT);String data="content://com.android.contacts/contacts/1";//根据指定的字符串解析出Uri对象Uri uri=Uri.parse(data);//设置data属性intent.setData(uri);startActivity(intent);}});bt3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.setAction(intent.ACTION_DIAL);String data="tel:15618345347";Uri uri=Uri.parse(data);intent.setData(uri);startActivity(intent);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}


 

原创粉丝点击