文档章节

android 常用的intent action整理

yolinfeng
 yolinfeng
发布于 2015/02/23 15:07
字数 1202
阅读 20
收藏 0

 

Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递。通过其自带的属性,其实可以方便的完成很多较为复杂的操作。例如直接调用拨号功能、处理接收短信,诸如此类,都可以通过设置Intent属性来完成。

Intent主要有以下四个重要属性,它们分别为:
ActionAction属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。标识Activity为一个程序开始的示例代码(AndroidManifest.xml进行配置)如下:<span style="font-size:16px;"><intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</span>
复制代码DataData通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。
CategoryCategory属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT
ExtrasExtras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

  在本文中,主要介绍常见action的使用,Action描述Intent所触发动作名字的字符串,对于BroadcastIntent来说,Action指被广播出去的动作。理论上Action可 以为任何字符串,而与Android系统应用有关的Action字符串以静态字符串常量的形式定义在了Intent类中。Action中包含很多种,例如呼入,呼出电话,老师上课讲的接受短信等等,下面谨对常见的与系统有关的action进行整理:

1. Intent.ACTION_MAIN
String: android.intent.action.MAIN
标识Activity为一个程序的开始。

2. Intent.Action_CALL
Stirng: android.intent.action.CALL
呼叫指定的电话号码。
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086");
startActivity(intent);

3. Intent.ACTION_POWER_CONNECTED;
插上外部电源时发出的广播

4 Intent.ACTION_POWER_DISCONNECTED;
已断开外部电源连接时发出的广播

5.Intent.Action.DIAL
String: action.intent.action.DIAL
调用拨号面板
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086");
startActivity(intent);

6.Intent.Action.ALL_APPS
String: andriod.intent.action.ALL_APPS
列出所有的应用。

7.Intent.ACTION_ANSWER
Stirng:android.intent.action.ANSWER
处理呼入的电话。

8 .Intent.ACTION_BUG_REPORT
String: android.intent.action.BUG_REPORT
显示Dug报告。

9. Intent.Action_CALL_BUTTON
String: android.action.intent.CALL_BUTTON.
相当于按拨号键。
Intent intent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(intent);

10. Telephony.SMS_RECEIVED
String: android.provider.Telephony.SMS_RECEIVED
接收短信的action
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<data android:host="localhost"/>
</intent-filter>

11. Intent.ACTION_GET_CONTENT
String: android.intent.action.GET_CONTENT
允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音)

12. Intent.ACTION_BATTERY_LOW;
String: android.intent.action.BATTERY_LOW
表示电池电量低

13. Intent.ACTION_SEND
String: android.intent.action.Send
发送邮件的action

14. Intent.ACTION_CALL_PRIVILEGED
Stringandroid.intent.action.CALL_PRIVILEGED
调用skypeaction

Intent intent = newIntent("android.intent.action.CALL_PRIVILEGED");
intent.setClassName("com.skype.raider",
"com.skype.raider.Main");
intent.setData(Uri.parse("tel:" + phone));
startActivity(intent);

15. Intent.ACTION_CLOSE_SYSTEM_DIALOGS
当屏幕超时进行锁屏时,当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏时,android系统都会广播此Action消息

 

18打开联系人列表 
            <1>            
           Intent i = new Intent(); 
           i.setAction(Intent.ACTION_GET_CONTENT); 
           i.setType("vnd.android.cursor.item/phone"); 
           startActivityForResult(i, REQUEST_TEXT); 

            <2> 
            Uri uri = Uri.parse("content://contacts/people"); 
            Intent it = new Intent(Intent.ACTION_PICK, uri); 
            startActivityForResult(it, REQUEST_TEXT); 

19 打开另一程序 
Intent i = new Intent(); 
            ComponentName cn = new ComponentName("com.yellowbook.android2", 
                    "com.yellowbook.android2.AndroidSearch"); 
            i.setComponent(cn); 
            i.setAction("android.intent.action.MAIN"); 
            startActivityForResult(i, RESULT_OK); 

20.调用系统编辑添加联系人(高版本SDK有效): 
Intent it = new Intent(Intent.ACTION_INSERT_OR_EDIT); 
                it.setType("vnd.android.cursor.item/contact"); 
                // it.setType(Contacts.CONTENT_ITEM_TYPE); 
                it.putExtra("name", "myName"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY,  "organization"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL, "email"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone"); 
                it.putExtra( android.provider.Contacts.Intents.Insert.SECONDARY_PHONE, 
                                "mobilePhone"); 
                it.putExtra(  android.provider.Contacts.Intents.Insert.TERTIARY_PHONE, 
                                "workPhone"); 
                it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title"); 
                startActivity(it); 

21.调用系统编辑添加联系人(全有效): 
Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); 
            intent.setType(People.CONTENT_ITEM_TYPE); 
            intent.putExtra(Contacts.Intents.Insert.NAME, "My Name"); 
            intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890"); 
            intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE, Contacts.PhonesColumns.TYPE_MOBILE); 
            intent.putExtra(Contacts.Intents.Insert.EMAIL, "com@com.com"); 
            intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,                    Contacts.ContactMethodsColumns.TYPE_WORK); 
            startActivity(intent); 

22(更新
    //直接打电话出去   
    Uri uri = Uri.parse("tel:0800000123");   
    Intent it = new Intent(Intent.ACTION_CALL, uri);   
    startActivity(it);   
    //用這個,要在 AndroidManifest.xml 中,加上   
    //<uses-permission id="android.permission.CALL_PHONE" /> 

23.最基本的share 信息的intent,可以传一段text信息到各个手机上已安装程序:如SMSEmailsina微波,米聊,facebooktwitter等等 

                Intent it = new Intent(Intent.ACTION_SEND); 
                it.putExtra(Intent.EXTRA_TEXT, "The email subject text"); 
                it.setType("text/plain"); 
                startActivity(Intent.createChooser(it, "Choose Email Client")); 
          
24.调用skype intent 

方法1:老版,新版不可用,可能是因为skypeactivity结构变动: 

//        Intent sky = new Intent("android.intent.action.CALL_PRIVILEGED"); 
//        sky.setClassName("com.skype.raider", 
//                "com.skype.raider.contactsync.ContactSkypeOutCallStartActivity"); 
//        sky.setData(Uri.parse("tel:" + phone)); 
//        startActivity(sky); 

方法2:打开到skypemain page: 

//        PackageManager packageManager = getActivity().getPackageManager(); 
//        Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider"); 
//        skype.setData(Uri.parse("tel:65465446")); 
//        startActivity(skype); 

方法3:传入号码,直接进入skype拨号画面并打电话: 

        Intent intent = new Intent("android.intent.action.CALL_PRIVILEGED");   
        intent.setClassName("com.skype.raider", 
        "com.skype.raider.Main"); 
        intent.setData(Uri.parse("tel:" + phone));   
        startActivity(intent);    

intent action大全: 

 android.intent.action.ALL_APPS

 android.intent.action.ANSWER

 android.intent.action.ATTACH_DATA

 android.intent.action.BUG_REPORT

 android.intent.action.CALL

 android.intent.action.CALL_BUTTON

 android.intent.action.CHOOSER

 android.intent.action.CREATE_LIVE_FOLDER

 android.intent.action.CREATE_SHORTCUT

 android.intent.action.DELETE

 android.intent.action.DIAL

 android.intent.action.EDIT

 android.intent.action.GET_CONTENT

 android.intent.action.INSERT

 android.intent.action.INSERT_OR_EDIT

 android.intent.action.MAIN

 android.intent.action.MEDIA_SEARCH

 android.intent.action.PICK

 android.intent.action.PICK_ACTIVITY

 android.intent.action.RINGTONE_PICKER

 android.intent.action.RUN

 android.intent.action.SEARCH

 android.intent.action.SEARCH_LONG_PRESS

 android.intent.action.SEND

 android.intent.action.SENDTO

 android.intent.action.SET_WALLPAPER

 android.intent.action.SYNC

 android.intent.action.SYSTEM_TUTORIAL

 android.intent.action.VIEW

 android.intent.action.VOICE_COMMAND

 android.intent.action.WEB_SEARCH

 android.net.wifi.PICK_WIFI_NETWORK

 android.settings.AIRPLANE_MODE_SETTINGS

 android.settings.APN_SETTINGS

 android.settings.APPLICATION_DEVELOPMENT_SETTINGS

 android.settings.APPLICATION_SETTINGS

 android.settings.BLUETOOTH_SETTINGS

 android.settings.DATA_ROAMING_SETTINGS

 android.settings.DATE_SETTINGS

 android.settings.DISPLAY_SETTINGS

 android.settings.INPUT_METHOD_SETTINGS

 android.settings.INTERNAL_STORAGE_SETTINGS

 android.settings.LOCALE_SETTINGS

 android.settings.LOCATION_SOURCE_SETTINGS

 android.settings.MANAGE_APPLICATIONS_SETTINGS

 android.settings.MEMORY_CARD_SETTINGS

 android.settings.NETWORK_OPERATOR_SETTINGS

 android.settings.QUICK_LAUNCH_SETTINGS

 android.settings.SECURITY_SETTINGS

 android.settings.SETTINGS

 android.settings.SOUND_SETTINGS

 android.settings.SYNC_SETTINGS

 android.settings.USER_DICTIONARY_SETTINGS

 android.settings.WIFI_IP_SETTINGS

 android.settings.WIFI_SETTINGS

 android.settings.WIRELESS_SETTINGS

© 著作权归作者所有

共有 人打赏支持
yolinfeng
粉丝 12
博文 196
码字总数 11946
作品 0
珠海
架构师
私信 提问
android 常用的intent action整理

来源:优亿论坛 Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执...

hoozheng
2012/08/29
0
0
安卓入门笔记之Activity信使—intent

本文来自 Legend 的博客园博客,作者给了不错的小结,下回分解~ Android Intent详解 一、 Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助...

twobeings
2014/04/05
0
0
Android Intent 深入理解

什么是Intent Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内...

learn_more
2015/02/04
0
0
Android零基础入门第79节:Intent 属性详解(上)

Android应用将会根据Intent来启动指定组件,至于到底启动哪个组件,则取决于Intent的各属性。本期将详细介绍Intent的各属性值,以及 Android如何根据不同属性值来启动相应的组件。 Intent 对...

鑫鱻
2017/10/19
0
0
Pro Android学习笔记(十一):了解Intent(中)

Intent的构成 Intent可以带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name)。一个intent至少携带上述的一个内容。 Action。Action名,...

simpower
2014/10/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
37分钟前
2
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
今天
2
0
SpringBoot 整合异步调用方法

1. 在 SpringBoot 主类上使用 @EnableAsync 注解,开启异步调用功能 package com.codingos.springbootdemo;import org.springframework.boot.SpringApplication;import org.springfra......

北漂的我
今天
1
0
0015-如何使用Sentry管理Hive外部表权限

1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的...

Hadoop实操
今天
3
0
边缘计算与数据中心的发展趋势

导读 Gartner研究表明,人工智能、物联网和5G助力下一代商业创新,由此产生大量数据,2020年前企业将使用超过75亿台联网设备。 在几乎每个方面,社会的节奏都正变得更快。我们希望客户服务问...

问题终结者
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部