您的位置:首页 > 编程语言 > Go语言

Intent的Category、Data、Type属性

2016-03-28 20:13 507 查看
Intent的Action、Category属性都是一个普通的字符串,其中Action代表Intent所要完成的一个抽象“动作”,而Category则用于为Action增加额外的附加类别信息,通常Action属性与Category属性结合使用。若创建一个Intent时,会默认启动Category属性值为Intent.CATEGORY_DEFAULT常量(android.intent.category.DEFAULT)的组件。

Data属性通常用于向Action属性提供操作的数据,Data属性接受一个Uri对象,一个Uri对象通过如下形式的字符串来表示:

content://com.android.contacts/contacts/1

tel:123

冒号前面指定了数据的类型,后面的是数据部分。

Type属性则用于明确指定Data属性的数据类型或MIME类型,但是通常来说,当Intent不指定Data属性时Type属性才会起作用,否则Android系统将会根据Data属性值来分析数据的类型,所以无需指定Type属性。

一旦为Intent同时指定了Action和Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定的数据执行相应的操作。下面是几个Action属性、Data属性的组合:

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

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

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

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

ACTION_VIEW content://contacts/people:显示所有联系人列表的信息

代码示例:

[java] view
plain copy

public class DataAttr extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button bn = (Button)findViewById(R.id.bn);

//为bn按钮添加一个监听器

bn.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

//创建Intent

Intent intent = new Intent();

String data = "http://www.crazyit.org";

//根据指定字符串解析出Uri对象

Uri uri = Uri.parse(data);

//为Intent设置Action属性

intent.setAction(Intent.ACTION_VIEW);

//设置Data属性

intent.setData(uri);

startActivity(intent);

}

});

Button edit = (Button)findViewById(R.id.edit);

//为edit按钮添加一个监听器

edit.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

//创建Intent

Intent intent = new Intent();

//为Intent设置Action属性(动作为:编辑)

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);

}

});

Button call = (Button)findViewById(R.id.call);

//为edit按钮添加一个监听器

call.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

//创建Intent

Intent intent = new Intent();

//为Intent设置Action属性(动作为:拨号)

intent.setAction(Intent.ACTION_DIAL);

String data = "tel:13800138000";

//根据指定字符串解析出Uri对象

Uri uri = Uri.parse(data);

//设置Data属性

intent.setData(uri);

startActivity(intent);

}

});

}

}

Extra属性通常用于在多个Action之间进行数据交换,Intent的Extra属性值应该是一个Bundle对象,其实就像一个Map对象,可以存入多组key-value对,然后用于数据交换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: