intent各大属性及常用应用

intent属性的常量
-----------------------------------------
Action

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_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(Uri类型的数据)

tel://:号码数据格式,后跟电话号码。
mailto://:邮件数据格式,后跟邮件收件人地址。
smsto://:短息数据格式,后跟短信接收号码。
content://:内容数据格式,后跟需要读取的内容。
file://:文件数据格式,后跟文件路径。
market://search?q=pname:pkgname:市场数据格式,在Google Market里搜索包名为pkgname的应用。
geo://latitude, longitude:经纬数据格式,在地图上显示经纬度所指定的位置

-----------------------------------------
Extra

EXTRA_BCC:存放邮件密送人地址的字符串数组。
EXTRA_CC:存放邮件抄送人地址的字符串数组。
EXTRA_EMAIL:存放邮件地址的字符串数组。
EXTRA_SUBJECT:存放邮件主题字符串。
EXTRA_TEXT:存放邮件内容。
EXTRA_KEY_EVENT:以KeyEvent对象方式存放触发Intent的按键。
EXTRA_PHONE_NUMBER:存放调用ACTION_CALL时的电话号码。

-----------------------------------------
Type(MIME类型的数据)

类型 后缀名 MIME
超文本标记语言文本 *.html text/html
普通文本 *.txt text/plain
RTF文本 *.rtf application/rtf
GIF图形 *.gif image/gif
JPEG图形 *.jpeg; *.jpg image/jpeg
au声音文件 *.au audio/basic
MIDI音乐文件 *.mid; *.midi audio/midi; audio/x-midi
RealAudio音乐文件 *.ra; *.ram audio/x-pn-realaudio
MPEG文件 *.mpg; *.mpeg video/mpeg
AVI文件 *.avi video/x-msvideo
GZIP文件 *.gz application/x-gzip
TAR文件 *.tar application/x-tar


=========================================
intent属性的使用场景
-----------------------------------------
Action

打开系统设置
Action: "android.settings.SETTINGS"

打开日期设置
Action: "android.settings.DATE_SETTINGS"

打开声音设置
Action: "android.settings.SOUND_SETTINGS"

打开WIFI设置
Action: "android.settings.WIFI_SETTINGS"

查看联系人
Action: "com.android.contacts.action.LIST_CONTACTS"

-----------------------------------------
Category

回到主界面
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_HOME

启动浏览器应用
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_BROWSER

启动计算器应用(夜神模拟器没有计算器应用)
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_CALCULATOR

启动日历应用(夜神模拟器没有日历应用)
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_CALENDAR

启动联系人应用
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_CONTACTS

启动发邮件应用(夜神模拟器没有发邮件应用)
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_EMAIL

启动相册应用
Action:MediaStore.ACTION_IMAGE_CAPTURE

启动地图应用(夜神模拟器没有地图应用)
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_MAPS

启动应用市场应用
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_MARKET

启动短信应用(夜神模拟器没有发短信的应用)
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_MESSAGING

启动播放器应用(夜神模拟器没有播放器应用)
Action: Intent.ACTION_MAIN
Category: Intent.CATEGORY_APP_MUSIC

-----------------------------------------
Data

拨打电话(夜神模拟器没有拨打电话的应用)
Action: Intent.ACTION_CALL
Data: "tel:10086"
需要添加权限:android.permission.CALL_PHONE

启动拨号面板(夜神模拟器没有拨打电话的应用)
Action: Intent.ACTION_DIAL
Data: "tel:10086"
需要添加权限:android.permission.CALL_PHONE

打开浏览器显示网页
Action: Intent.ACTION_VIEW
Data: "http://www.baidu.com"

显示网络图片
Action: Intent.ACTION_VIEW
Data: "http://www.baidu.com/img/bdlogo.gif"
-----------------------------------------
Extra

发送短信(夜神模拟器没有发短信的应用)
Action: Intent.ACTION_SENDTO
Data: "smsto:10086"
Extra:
"sms_body":"content"

发送Email(夜神模拟器没有发送email的应用)
Action: Intent.ACTION_SEND
Extra:
Intent.EXTRA_EMAIL: 收件人 字符串数组
Intent.EXTRA_CC: 抄送人 字符串数组
Intent.EXTRA_TEXT: 邮件的内容 字符串
Intent.EXTRA_SUBJECT: 邮件的标题 字符串
Type: "message/rfc822"
需要通过Intent.createChooser(intent, "请选择邮件发送软件"); 选择邮件发送软件

创建快捷方式(夜神模拟器上不能创建快捷方式)
Action: "com.android.launcher.action.INSTALL_SHORTCUT"
Extra:
Intent.EXTRA_SHORTCUT_ICON_RESOURCE: Parcelable格式的图标
Intent.EXTRA_SHORTCUT_ICON: Bitmap格式的图片
(以上两个任选一个)
Intent.EXTRA_SHORTCUT_NAME: "快捷方式的名称"
Intent.EXTRA_SHORTCUT_INTENT: 快捷方式跳转的intent
注: 需要通过sendBroadcast(intent)的方式发送广播
需要添加权限:com.android.launcher.permission.INSTALL_SHORTCUT

-----------------------------------------
Type

查看图片
Action: Intent.ACTION_VIEW
Data: "file:///mnt/sdcard/Download/image.png"
Type: "image/*"

查看文本
Action: Intent.ACTION_VIEW
Data: "file:///mnt/sdcard/Download/info.txt"
Type: "text/*"

播放音频(夜神模拟器没有播放器应用)
Action: Intent.ACTION_VIEW
Data: "file:///mnt/sdcard/Download/apple.mp3"
Type: "audio/*"

播放视频
Action: Intent.ACTION_VIEW
Data: "file:///mnt/sdcard/Download/gangnamstyle.3gp"
Type: "video/*"

被启动的应用中需要设置如下intent
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>

-----------------------------------------
Flag

FLAG_ACTIVITY_NEW_TASK:默认的跳转类型,会重新创建一个新的Activity(第一种)
FLAG_ACTIVITY_SINGLE_TOP:相当于Activity加载模式中的singleTop(第二种)
FLAG_ACTIVITY_CLEAR_TOP:相当于加载模式中的SingleTask(第三种)

 例子:

 

每个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) 让用户选择数据,并返回所选数据。

(1)、拨打电话:
Intent intent=new Intent(); 
intent.setAction(Intent.ACTION_CALL);  
//intent.setAction("android.intent.action.CALL");  //以下各项皆如此,都有两种写法。
intent.setData(Uri.parse("tel:132000001"));
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); 

(2)、利用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); 

(1)、调用发送短信的程序 
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);

(2)、发送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"));

 4、 Intent利用Action属性中的ACTION_GET_CONTENT获取返回值:
//选择图片 requestCode 返回的标识
Intent intent = new Intent(); 
intent.setAction(Intent. ACTION_GET_CONTENT );
intent.setType( "image/*" ); 
Intent wrapperIntent = Intent.createChooser(intent, null);
startActivityForResult(wrapperIntent, requestCode);  


//添加音频
Intent intent = new Intent();
intent.setAction(Intent. ACTION_GET_CONTENT );
intent.setType( "video/*" ); 
Intent wrapperIntent = Intent.createChooser(intent, null);
startActivityForResult(wrapperIntent, requestCode);  


//视频
Intent intent = new Intent();
intent.setAction(Intent. ACTION_GET_CONTENT );
intent.setType( "video/*" ); 
Intent wrapperIntent = Intent.createChooser(intent, null);
startActivityForResult(wrapperIntent, requestCode);  


//录音
Intent intent = new Intent();
intent.setAction(Intent. ACTION_GET_CONTENT );
intent.setType( "audio/amr" ); 
intent.setClassName("com.android.soundrecorder","com.android.soundrecorder.SoundRecorder");
startActivityForResult(intent, requestCode);  

 

posted @ 2016-06-07 17:37  ts-android  阅读(581)  评论(0编辑  收藏  举报