Android中Data、Type属性与intent-filter配置
2013-06-24 14:41
447 查看
Data属性通常用于向Action属性提供操作的数据。Data属性接受一个Uri对象,一个Uri对象通常通过如下形式的字符串来表示:content://com.android.contacts/contacts/1。冒号前面大致指定了数据的类型,冒号后面是数据部分。所以一个合法的Uri对象既可决定操作哪种数据类型的数据,又可指定具体的数据值。
Type属性则用于明确指定Data属性所指定数据的类型或MIME类型,通常来说,当Intent不指定Data属性时,Type属性才会起作用,否则Android系统会根据Data属性值来分析数据类型。
一旦Intent同时指定了Action、Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定数据执行相应的操作。下面是几个Action、Data属性的组合:
![](http://img.blog.csdn.net/20130624143621953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE0MjQzNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20130624143636593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE0MjQzNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下面通过一个简单实例来演示Data属性和Action属性的结合使用:
Activity:
布局XML:
Type属性则用于明确指定Data属性所指定数据的类型或MIME类型,通常来说,当Intent不指定Data属性时,Type属性才会起作用,否则Android系统会根据Data属性值来分析数据类型。
一旦Intent同时指定了Action、Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定数据执行相应的操作。下面是几个Action、Data属性的组合:
下面通过一个简单实例来演示Data属性和Action属性的结合使用:
Activity:
package com.lovo.activity; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.lovo.lesson9.R; public class DataAttr extends Activity { private Button homeBtn; private Button webBtn; private Button contactsBtn; private Button phoneBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.data); homeBtn = (Button) findViewById(R.id.data_btn_home); // 返回桌面 homeBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); // 返回桌面的动作和附加信息 intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } }); // 打开浏览器访问网址 webBtn = (Button) findViewById(R.id.data_btn_web); webBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 创建Intent对象 Intent intent = new Intent(); String uriStr = "http://www.baidu.com"; // 根据指定字符串解析出Uri对象 Uri uri = Uri.parse(uriStr); // 为Intent设置Action属性 intent.setAction(Intent.ACTION_VIEW); // 设置Data属性 intent.setData(uri); startActivity(intent); } }); // 打开通讯录进行编辑 contactsBtn = (Button) findViewById(R.id.data_btn_contacts); contactsBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); String uriStr = "content://com.android.contacts/contacts/1"; Uri uri = Uri.parse(uriStr); // 设置可编辑界面 intent.setAction(Intent.ACTION_EDIT); // 设置data属性:设置uri地址 intent.setData(uri); startActivity(intent); } }); // 打开拨号界面 phoneBtn = (Button) findViewById(R.id.data_btn_phone); phoneBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); String uriStr = "tel:15680768384"; Uri uri = Uri.parse(uriStr); // 设置拨号界面 intent.setAction(Intent.ACTION_DIAL); // 设置uri地址 intent.setData(uri); startActivity(intent); } }); } }
布局XML:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/data_btn_web" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="访问百度" /> <Button android:id="@+id/data_btn_contacts" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="访问通讯录" /> <Button android:id="@+id/data_btn_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开拨号界面" /> <Button android:id="@+id/data_btn_home" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="返回桌面" /> </LinearLayout>
相关文章推荐
- Android讲义3---第五章---Data,Type属性与intent-filter配置
- Data、Type属性与intent-filter配置
- Data、Type属性与intent-filter配置
- Intent的属性及Intent-filter配置——Data、Type属性与intent-filter配置
- Category、Data、Type属性与intent-filter配置
- Android中Intent的Action、Category属性与intent-filter配置
- Android学习之——intent-fliter配置之data属性
- Android的Intent&IntentFilter Intent属性及Intent-filter配置
- **android Intent 的Componet ,Action ,Category,Data,Type,Extra,Flag 7种属性详解
- [Android基础]Intent用法的二三事(下)——Data、Type、Extra、Flag的属性详解
- Android中Intent-filter的四个属性Action,Category,Extras,Data
- Android开发之隐式Intent中Intent-filter的三个属性-action,category,data
- Intent的Action与Category属性以及intent-filter配置
- android 应用启动intent filter配置
- Android Manifest标签之data, grant-uri-permission, instrumentation, intent-filter
- android IntentFilter 使用之 data过滤
- Android开发--Intent-filter属性详解
- android 打开各种文件 intent.setDataAndType
- Android开发--Intent-filter属性详解
- 【IntentFilter】 intent-filter的data属性详述