搜档网
当前位置:搜档网 › android简单的广播事件处理

android简单的广播事件处理

android简单的广播事件处理
android简单的广播事件处理

广播事件处理

一.Broadcast Receiver

比如打电话等等;

广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别,而广播事件处理机制是系统级别。

二.使用Broadcast Receiver

1.编写类继承BroadcaseReceiver,复写onReceiver()方法

2.在AndroidManifest.xml文件中注册BroadcaseReceiver

3.构建Intent对象

4.调用sendBroadcase()方法发送广播

三.BroadcaseReceiver生命周期

BroadcastReceiver对象仅在调用onReceive()方法时有效,当该方法执行完毕后,系统认为销毁该对象。

四.标准广播Action

五.注册Broadcast Receiver的方法

1.在AndroidManifest.xml文件中进行注册//有缺陷,不会因为Activity被销毁而销毁,一般不用

//设置广播类型

这里可以设置action为短信什么的:(需要权限)

//短信

eceiver android:name="com.qmk.guangbo.Myguanbo">

android:name=""/>

拍照

2.在应用程序的代码中进行注册

注册BroadcastReceiver

registerReceiver()

取消注册BroadcastReceiver

unregisterReceiver()

实例1:

MainActivity.java

package com.example.guangbo;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity {

private Button btn1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.sodocs.net/doc/1d12646217.html,yout.activity_main);

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

btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent=new Intent();//广播也是Intent来传递的intent.setAction("android.provider.Telephony.SMS_RECEIVED");

//设置action的值表示广播的类型,(name)

sendBroadcast(intent);//把intent传递过来

}

});

}

@Override

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

}

}

Myguanbo.java

package com.qmk.guangbo;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class Myguanbo extends BroadcastReceiver {

//写一个类继承BroadcastReceiver

private static final String TAG = "Myservice";

public Secondrecvice(){

//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息

//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法

Log.i(TAG, "2Receive");

}

@Override

public void onReceive(Context context, Intent intent) {

Log.i(TAG, "onReceive");

}

}

实例2:

MainActivity.java

package com.example.guangbo;

import com.qmk.guangbo.Secondrecvice;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.content.IntentFilter;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity {

private Button btn1,btn2,btn3;

private Secondrecvice rec;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.sodocs.net/doc/1d12646217.html,yout.activity_main);

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

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

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

btn1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent=new Intent();//广播也是Intent来传递的intent.setAction("android.provider.Telephony.SMS_RECEIVED");

//设置action的值表示广播的类型,(name)

sendBroadcast(intent);//把intent传递过来

}

});

btn2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

IntentFilter fitt=new IntentFilter();

rec=new Secondrecvice();

fitt.addAction("android.provider.Telephony.SMS_RECEIVED");

//注册

registerReceiver(rec, fitt);

//参数1,用来处理广播的receiver;参数2:intentfilter对象

}

});

btn3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

unregisterReceiver(rec);//注销

}

});

}

@Override

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

}

}

Myguanbo.java

package com.qmk.guangbo;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class Myguanbo extends BroadcastReceiver {

//写一个类继承BroadcastReceiver

private static final String TAG = "Myservice";

public Secondrecvice(){

//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息

//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG, "2Receive");

}

@Override

public void onReceive(Context context, Intent intent) {

Log.i(TAG, "onReceive");

}

}

Secondrecvice.java

package com.qmk.guangbo;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class Secondrecvice extends BroadcastReceiver {

//写一个类继承BroadcastReceiver

private static final String TAG = "Myservice";

public Secondrecvice(){

//复习里面的onReceive方法,可以在这里处理一些我们需要处理的消息

//假如这这消息是电话就能获取到电话信息,根据大家的需求在这里面写不同的方法Log.i(TAG, "2Receive");

}

@Override

public void onReceive(Context context, Intent intent) {

//不能执行耗时的操作,它只存在1到2秒钟

Log.i(TAG, "2onReceive");

}

}

附录1:

Android 广播事件 Intent Action 大全

1.String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。. "android.intent.action.ADD_SHORTCUT"

2.String ALL_APPS_ACTION 动作:列举所有可用的应用。输入:无。

"android.intent.action.ALL_APPS"

3.String ALTERNA TIVE_CATEGORY 类别:说明 activity 是用户正在浏览的数据的一个可选操作。 "android.intent.category.ALTERNATIVE"

4.String ANSWER_ACTION 动作:处理拨入的电话。"android.intent.action.ANSWER"

5.String BATTERY_CHANGED_ACTION 广播:充电状态,或者电池的电量发生变化。"android.intent.action.BA TTERY_CHANGED"

6.String BOOT_COMPLETED_ACTION 广播:在系统启动后,这个动作被广播一次(只有一次)。 "android.intent.action.BOOT_COMPLETED"

7.String BROWSABLE_CA TEGORY 类别:能够被浏览器安全使用

的 activities 必须支持这个类别。 "android.intent.category.BROWSABLE"

8.String BUG_REPORT_ACTION 动作:显示 activity 报告错误。

"android.intent.action.BUG_REPORT"

9. String CALL_ACTION 动作:拨打电话,被呼叫的联系人在数据中指定。

"android.intent.action.CALL"

10.String CALL_FORWARDING_STATE_CHANGED_ACTION 广播:语音电话的呼叫转移状态已经改变。 "android.intent.action.CFF"

11.String CLEAR_CREDENTIALS_ACTION 动作:清除登陆凭证 (credential)。"android.intent.action.CLEAR_CREDENTIALS"

12.String CONFIGURATION_CHANGED_ACTION 广播:设备的配置信息已经改变,参见 Resources.Configuration. "android.intent.action.CONFIGURATION_CHANGED" Creator CR EATOR 无无

13.String DATA_ACTIVITY_STA TE_CHANGED_ACTION 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。 "android.intent.action.DATA_ACTIVITY"

14.String DATA_CONNECTION_STATE_CHANGED_ACTION 广播:电话的数据连接状态已经改变。"android.intent.action.DATA_STATE"

15.String DATE_CHANGED_ACTION 广播:日期被改变。

"android.intent.action.DATE_CHANGED"

16.String DEFAULT_ACTION 动作:和 VIEW_ACTION 相同,是在数据上执行的标准动作。 "android.intent.action.VIEW"

17.String DEFAULT_CATEGORY 类别:如果 activity 是对数据执行确省动作(点击, center press)的一个选项,需要设置这个类别。 "android.intent.category.DEFAULT" 18.String DELETE_ACTION 动作:从容器中删除给定的数据。

"android.intent.action.DELETE"

19.String DEVELOPMENT_PREFERENCE_CATEGORY 类别:说明 activity 是一个设置面板 (development preference panel). "android.intent.category.DEVELOPMENT_PREFERENCE"

20.String DIAL_ACTION 动作:拨打数据中指定的电话号码。 "android.intent.action.DIAL"

21. String EDIT_ACTION 动作:为制定的数据显示可编辑界面。

"android.intent.action.EDIT"

22.String EMBED_CATEGORY 类别:能够在上级(父)activity 中运行。

"android.intent.category.EMBED"

23.String EMERGENCY_DIAL_ACTION 动作:拨打紧急电话号码。

"android.intent.action.EMERGENCY_DIAL"

24.int FORWARD_RESULT_LAUNCH 启动标记:如果这个标记被设置,而且被一个已经存在的 activity 用来启动新的 activity,已有 activity 的回复目标 (reply target) 会被转移给新的 activity。16 0x00000010

25.String FOTA_CANCEL_ACTION 广播:取消所有被挂起的 (pending) 更新下载。"android.server.checkin.FOTA_CANCEL"

26.String FOTA_INSTALL_ACTION 广播:更新已经被确认,马上就要开始安装。 "android.server.checkin.FOTA_INSTALL"

27.String FOTA_READY_ACTION 广播:更新已经被下载,可以开始安装。 "android.server.checkin.FOTA_READY"

28.String FOTA_RESTART_ACTION 广播:恢复已经停止的更新下载。 "android.server.checkin.FOTA_RESTART"

29.String FOTA_UPDATE_ACTION 广播:通过 OTA 下载并安装操作系统更新。 "android.server.checkin.FOTA_UPDATE"

30.String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 类别:

To be used as code under test for framework instrumentation tests.

"android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"

31.String GADGET_CA TEGORY 类别:这个 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。

"android.intent.category.GADGET"

32.String GET_CONTENT_ACTION 动作:让用户选择数据并返回。 "android.intent.action.GET_CONTENT"

33.String HOME_CA TEGORY 类别:主屏幕 (activity),设备启动后显示的第一个 activity。 "android.intent.category.HOME"

34.String INSERT_ACTION 动作:在容器中插入一个空项 (Item)。

"android.intent.action.INSERT"

35.String INTENT_EXTRA 附加数据:和

PICK_ACTIVITY_ACTION 一起使用时,说明用户选择的用来显示的 activity;和 ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。 "android.intent.extra.INTENT"

36.String LABEL_EXTRA 附加数据:大写字母开头的字符标签,和 ADD_SHORTCUT_ACTION 一起使用。

"https://www.sodocs.net/doc/1d12646217.html,BEL"

37.String LAUNCHER_CATEGORY 类别:Activity 应该被显示在顶级的 launcher 中。 "https://www.sodocs.net/doc/1d12646217.html,UNCHER"

38.String LOGIN_ACTION 动作:获取登录凭

证。 "android.intent.action.LOGIN"

39.String MAIN_ACTION 动作:作为主入口点启动,不需要数

据。 "android.intent.action.MAIN"

40.String MEDIABUTTON_ACTION 广播:用户按下了

“Media Button”。 "android.intent.action.MEDIABUTTON"

41.String MEDIA_BAD_REMOV AL_ACTION 广播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)。

"android.intent.action.MEDIA_BAD_REMOV AL"

42.String MEDIA_EJECT_ACTION 广播:用户想要移除扩展介质(拔掉扩展卡)。 "android.intent.action.MEDIA_EJECT"

43 String MEDIA_MOUNTED_ACTION 广播:扩展介质被插入,而且已经被挂载。 "android.intent.action.MEDIA_MOUNTED"

44.String MEDIA_REMOVED_ACTION 广播:扩展介质被移除。 "android.intent.action.MEDIA_REMOVED"

45.String MEDIA_SCANNER_FINISHED_ACTION 广播:已经扫描完介质的一个目录。 "android.intent.action.MEDIA_SCANNER_FINISHED"

46String MEDIA_SCANNER_STARTED_ACTION 广播:开始扫描介质的一个目录。"android.intent.action.MEDIA_SCANNER_STARTED"

47. String MEDIA_SHARED_ACTION 广播:扩展介质的挂载被解除 (unmount),因为它已经作为 USB 大容量存储被共享。 "android.intent.action.MEDIA_SHARED"

48.String MEDIA_UNMOUNTED_ACTION 广播:扩展介质存在,但是还没有被挂载 (mount)。

"android.intent.action.MEDIA_UNMOUNTED"

49. String MESSAGE_W AITING_STA TE_CHANGED_ACTION 广播:电话的消息等待(语音邮件)状态已经改变。 "android.intent.action.MWI"

50.int MULTIPLE_TASK_LAUNCH 启动标记:和 NEW_TASK_LAUNCH 联合使用,禁止将已有的任务改变为前景任务 (foreground)。 8 0x00000008

51.String NETWORK_TICKLE_RECEIVED_ACTION 广播:设备

收到了新的网络 "tickle" 通知。

"https://www.sodocs.net/doc/1d12646217.html,WORK_TICKLE_RECEIVED"

52.int NEW_TASK_LAUNCH 启动标记:设置以后,activity 将成为历史堆栈中的第一个新任务(栈顶)。

4 0x00000004 int NO_HISTORY_LAUNCH 启动标记:设置以后,新的 activity 不会被保存在历史堆栈中。 1 0x00000001

53String PACKAGE_ADDED_ACTION 广播:设备上新安装了一个应用程序包。 "android.intent.action.PACKAGE_ADDED"

54.String PACKAGE_REMOVED_ACTION 广播:设备上删除了一个应用程序包。 "android.intent.action.PACKAGE_REMOVED"

55.String PHONE_STATE_CHANGED_ACTION 广播:电话状态已经改变。 "android.intent.action.PHONE_STATE"

56.String PICK_ACTION 动作:从数据中选择一个项目 (item),将被选中的项目返回。 "android.intent.action.PICK"

57.String PICK_ACTIVITY_ACTION 动作:选择一个 activity,返回被选择的 activity 的类(名)。

"android.intent.action.PICK_ACTIVITY"

58.String PREFERENCE_CATEGORY 类别:activity是一个设置面板 (preference panel)。 "android.intent.category.PREFERENCE"

59.String PROVIDER_CHANGED_ACTION 广播:更新将要(真正)被安装。 "android.intent.action.PROVIDER_CHANGED"

60.String PROVISIONING_CHECK_ACTION 广播:要求 polling of provisioning service 下载最新的设置。

"android.intent.action.PROVISIONING_CHECK"

61.String RUN_ACTION 动作:运行数据(指定的应用),无论它(应用)是什么。 "android.intent.action.RUN"

62.String SAMPLE_CODE_CA TEGORY 类别:

To be used as an sample code example (not part of the normal user experience).

"android.intent.category.SAMPLE_CODE"

63.String SCREEN_OFF_ACTION 广播:屏幕被关闭。 "android.intent.action.SCREEN_OFF"

64.String SCREEN_ON_ACTION 广播:屏幕已经被打开。 "android.intent.action.SCREEN_ON"

65.String SELECTED_ALTERNA TIVE_CATEGORY 类别:对于被用户选中的数据,activity 是它的一个可选操作。

"android.intent.category.SELECTED_ALTERNATIVE"

66.String SENDTO_ACTION 动作:向 data 指定的接收者发送一个消息。 "android.intent.action.SENDTO"

67.String SERVICE_STA TE_CHANGED_ACTION 广播:电话服务的状态已经改变。 "android.intent.action.SERVICE_STATE"

68.String SETTINGS_ACTION 动作:显示系统设置。输入:无。 "android.intent.action.SETTINGS"

69.String SIGNAL_STRENGTH_CHANGED_ACTION 广播:电话的信号强度已经改变。 "android.intent.action.SIG_STR"

70.int SINGLE_TOP_LAUNCH 启动标记:设置以后,如果 activity 已经启动,而且位于历史堆栈的顶端,将不再启动(不重新启动) activity。 2 0x00000002

71.String STATISTICS_REPORT_ACTION 广播:要求 receivers 报告自己的统计信息。 "android.intent.action.STA TISTICS_REPORT"

72.String STATISTICS_STATE_CHANGED_ACTION 广播:统计信息服务的状态已经改变。

"android.intent.action.STATISTICS_STA TE_CHANGED"

73.String SYNC_ACTION 动作:执行数据同步。

"android.intent.action.SYNC"

74.String TAB_CATEGORY 类别:这个 activity 应该在 TabActivity 中作为一个 tab 使用。"android.intent.category.TAB"

75. String TEMPLATE_EXTRA 附加数据:新记录的初始化模板。 "android.intent.extra.TEMPLATE"

76.String TEST_CATEGORY 类别:作为测试目的使用,不是正常的用户体验的一部分。 "android.intent.category.TEST"

77. String TIMEZONE_CHANGED_ACTION 广播:时区已经改变。 "android.intent.action.TIMEZONE_CHANGED"

78.String TIME_CHANGED_ACTION 广播:时间已经改变(重新设置)。 "android.intent.action.TIME_SET"

79.String TIME_TICK_ACTION 广播:当前时间已经变化(正常的时间流逝)。 "android.intent.action.TIME_TICK"

80.String UMS_CONNECTED_ACTION 广播:设备进入 USB 大容量存储模式。 "android.intent.action.UMS_CONNECTED"

81.String UMS_DISCONNECTED_ACTION 广播:设备从 USB 大容量存储模式退出。 "android.intent.action.UMS_DISCONNECTED"

82. String UNIT_TEST_CA TEGORY 类别:应该被用作单元测试(通过 test harness 运行)。 "android.intent.category.UNIT_TEST"

83.String VIEW_ACTION 动作:向用户显示数据。 "android.intent.action.VIEW"

84.String WALLPAPER_CA TEGORY 类别:这个 activity 能过为设备设置墙纸。 "android.intent.category.WALLPAPER"

85.String WALLPAPER_CHANGED_ACTION 广播:系统的墙纸已经改变。 "android.intent.action.WALLPAPER_CHANGED"

86.String WALLPAPER_SETTINGS_ACTION 动作:显示选择墙纸的设置界面。输入:无。"android.intent.action.WALLPAPER_SETTINGS"

87.String WEB_SEARCH_ACTION 动作:执行 web 搜索。 "android.intent.action.WEB_SEARCH"

88.String XMPP_CONNECTED_ACTION 广播:XMPP 连接已经被建立。 "android.intent.action.XMPP_CONNECTED"

89.String XMPP_DISCONNECTED_ACTION 广播:XMPP 连接已经被断开。 "android.intent.action.XMPP_DI

附录:2

String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。.

“android.intent.action.ADD_SHORTCUT”

String ALL_APPS_ACTION 动作:列举所有可用的应用。

输入:无。“android.intent.action.ALL_APPS”

String ALTERNATIVE_CATEGORY 类别:说明activity 是用户正在浏览的数据的一个可选操作。“android.intent.category.ALTERNATIVE”

String ANSWER_ACTION 动作:处理拨入的电话。

“android.intent.action.ANSWER”

String BATTERY_CHANGED_ACTION 广播:充电状态,或者电池的电量发生变化。“android.intent.action.BATTERY_CHANGED”

String BOOT_COMPLETED_ACTION 广播:在系统启动后。

这个动作被广播一次(只有一次)。“android.intent.action.BOOT_COMPLETED”

String BROWSABLE_CATEGORY 类别:能够被浏览器安全使用的activities 必须支持这个类别。“android.intent.category.BROWSABLE”

String BUG_REPORT_ACTION 动作:显示activity 报告错误。

“android.intent.action.BUG_REPORT”

String CALL_ACTION 动作:拨打电话。

被呼叫的联系人在数据中指定。“android.intent.action.CALL”

String CALL_FORWARDING_STATE_CHANGED_ACTION 广播:语音电话的呼叫转移状态已经改变。“android.intent.action.CFF”

String CLEAR_CREDENTIALS_ACTION 动作:清除登陆凭证(credential)。“android.intent.action.CLEAR_CREDENTIALS”

String CONFIGURATION_CHANGED_ACTION 广播:设备的配置信息已经改变,参见Resources.Configuration. “android.intent.action.CONFIGURATION_CHANGED”

Creator CREATOR 无无

String DATA_ACTIVITY_STATE_CHANGED_ACTION 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。“android.intent.action.DATA_ACTIVITY”

String DATA_CONNECTION_STATE_CHANGED_ACTION 广播:电话的数据连接状态已经改变。“android.intent.action.DATA_STATE”

String DATE_CHANGED_ACTION 广播:日期被改变。

“android.intent.action.DATE_CHANGED”

String DEFAULT_ACTION 动作:和VIEW_ACTION 相同,是在数据上执行的标准动作。“android.intent.action.VIEW”

String DEFAULT_CATEGORY 类别:如果activity 是对数据执行确省动作(点击, center press)的一个选项,需要设置这个类别。“android.intent.category.DEFAULT”

String DELETE_ACTION 动作:从容器中删除给定的数据。

“android.intent.action.DELETE”

String DEVELOPMENT_PREFERENCE_CATEGORY 类别:说明activity 是一个设置面板(development preference panel).

“android.intent.category.DEVELOPMENT_PREFERENCE”

String DIAL_ACTION 动作:拨打数据中指定的电话号码。

“android.intent.action.DIAL”

String EDIT_ACTION 动作:为制定的数据显示可编辑界面。

“android.intent.action.EDIT”

String EMBED_CATEGORY 类别:能够在上级(父)activity 中运行。

“android.intent.category.EMBED”

String EMERGENCY_DIAL_ACTION 动作:拨打紧急电话号码。

“android.intent.action.EMERGENCY_DIAL”

int FORWARD_RESULT_LAUNCH 启动标记:如果这个标记被设置。

而且被一个已经存在的activity 用来启动新的activity,已有activity 的回复目标(reply target) 会被转移给新的activity。16 0×00000010

String FOTA_CANCEL_ACTION 广播:取消所有被挂起的(pending) 更新下载。“android.server.checkin.FOTA_CANCEL”

String FOTA_INSTALL_ACTION 广播:更新已经被确认,马上就要开始安装。“android.server.checkin.FOTA_INSTALL”

String FOTA_READY_ACTION 广播:更新已经被下载。

可以开始安装。“android.server.checkin.FOTA_READY”

String FOTA_RESTART_ACTION 广播:恢复已经停止的更新下载。

“android.server.checkin.FOTA_RESTART”

String FOTA_UPDATE_ACTION 广播:通过OTA 下载并安装操作系统更新。“android.server.checkin.FOTA_UPDATE”

String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 类别:To be used as code under test for framework instrumentation tests.

“android.intent.category.FRAMEWORK_INSTRUMENTATION _TEST”

String GADGET_CATEGORY 类别:这个activity 可以被嵌入宿主activity (activity that is hosting gadgets)。“android.intent.category.GADGET”

String GET_CONTENT_ACTION 动作:让用户选择数据并返回。

“android.intent.action.GET_CONTENT”

String HOME_CATEGORY 类别:主屏幕(activity)。

设备启动后显示的第一个activity。“android.intent.category.HOME”

String INSERT_ACTION 动作:在容器中插入一个空项(item)。

“android.intent.action.INSERT”

String INTENT_EXTRA 附加数据:和PICK_ACTIVITY_ACTION 一起使用时,说明用户选择的用来显示的activity;和ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。“android.intent.extra.INTENT”

String LABEL_EXTRA 附加数据:大写字母开头的字符标签,和

ADD_SHORTCUT_ACTION 一起使用。“https://www.sodocs.net/doc/1d12646217.html,BEL”

String LAUNCHER_CATEGORY 类别:Activity 应该被显示在顶级的launcher 中。“https://www.sodocs.net/doc/1d12646217.html,UNCHER”

String LOGIN_ACTION 动作:获取登录凭证。“android.intent.action.LOGIN”

String MAIN_ACTION 动作:作为主入口点启动,不需要数据。

“android.intent.action.MAIN”

String MEDIABUTTON_ACTION 广播:用户按下了“Media Button”。“android.intent.action.MEDIABUTTON”

String MEDIA_BAD_REMOVAL_ACTION 广播:扩展介质(扩展卡)已经从SD 卡插槽拔出,但是挂载点(mount point) 还没解除(unmount)。

“android.intent.action.MEDIA_BAD_REMOVAL”

String MEDIA_EJECT_ACTION 广播:用户想要移除扩展介质(拔掉扩展卡)。“android.intent.action.MEDIA_EJECT”

String MEDIA_MOUNTED_ACTION 广播:扩展介质被插入,而且已经被挂载。“android.intent.action.MEDIA_MOUNTED”

String MEDIA_REMOVED_ACTION 广播:扩展介质被移除。

“android.intent.action.MEDIA_REMOVED”

String MEDIA_SCANNER_FINISHED_ACTION 广播:已经扫描完介质的一个目录。“android.intent.action.MEDIA_SCANNER_FINISHED”

String MEDIA_SCANNER_STARTED_ACTION 广播:开始扫描介质的一个目录。“android.intent.action.MEDIA_SCANNER_STARTED”

String MEDIA_SHARED_ACTION 广播:扩展介质的挂载被解除(unmount)。

因为它已经作为USB 大容量存储被共享。

“android.intent.action.MEDIA_SHARED”

String MEDIA_UNMOUNTED_ACTION 广播:扩展介质存在,但是还没有被挂载(mount)。“android.intent.action.MEDIA_UNMOUNTED”

String MESSAGE_WAITING_STATE_CHANGED_ACTION 广播:电话的消息等待(语音邮件)状态已经改变。“android.intent.action.MWI”

int MULTIPLE_TASK_LAUNCH 启动标记:和NEW_TASK_LAUNCH 联合使用。

禁止将已有的任务改变为前景任务(foreground)。8 0×00000008 String NETWORK_TICKLE_RECEIVED_ACTION 广播:设备收到了新的网络“tickle”通知。“https://www.sodocs.net/doc/1d12646217.html,WORK_TICKLE_RECEIVED”

int NEW_TASK_LAUNCH 启动标记:设置以后,activity 将成为历史堆栈中的第一个新任务(栈顶)。4 0×00000004

int NO_HISTORY_LAUNCH 启动标记:设置以后,新的activity 不会被保存在历史堆栈中。1 0×00000001

String PACKAGE_ADDED_ACTION 广播:设备上新安装了一个应用程序包。“android.intent.action.PACKAGE_ADDED”

String PACKAGE_REMOVED_ACTION 广播:设备上删除了一个应用程序包。“android.intent.action.PACKAGE_REMOVED”

String PHONE_STATE_CHANGED_ACTION 广播:电话状态已经改变。“android.intent.action.PHONE_STATE”

String PICK_ACTION 动作:从数据中选择一个项目(item),将被选中的项目返回。“android.intent.action.PICK”

String PICK_ACTIVITY_ACTION 动作:选择一个activity,返回被选择的activity 的类(名)。“android.intent.action.PICK_ACTIVITY”

String PREFERENCE_CATEGORY 类别:activity是一个设置面板(preference panel)。“android.intent.category.PREFERENCE”

String PROVIDER_CHANGED_ACTION 广播:更新将要(真正)被安装。“android.intent.action.PROVIDER_CHANGED”

String PROVISIONING_CHECK_ACTION 广播:要求polling of provisioning service 下载最新的设置。“android.intent.action.PROVISIONING_CHECK”

String RUN_ACTION 动作:运行数据(指定的应用),无论它(应用)是什么。“android.intent.action.RUN”

String SAMPLE_CODE_CATEGORY 类别:To be used as an sample code example (not part of the normal user experience). “android.intent.category.SAMPLE_CODE”

String SCREEN_OFF_ACTION 广播:屏幕被关闭。

“android.intent.action.SCREEN_OFF”

String SCREEN_ON_ACTION 广播:屏幕已经被打开。

“android.intent.action.SCREEN_ON”

String SELECTED_ALTERNATIVE_CATEGORY 类别:对于被用户选中的数据。

activity 是它的一个可选操作。

“android.intent.category.SELECTED_ALTERNATIVE”

String SENDTO_ACTION 动作:向data 指定的接收者发送一个消息。

“android.intent.action.SENDTO”

String SERVICE_STATE_CHANGED_ACTION 广播:电话服务的状态已经改变。“android.intent.action.SERVICE_STATE”

String SETTINGS_ACTION 动作:显示系统设置。输入:无。

“android.intent.action.SETTINGS”

String SIGNAL_STRENGTH_CHANGED_ACTION 广播:电话的信号强度已经改变。“android.intent.action.SIG_STR”

int SINGLE_TOP_LAUNCH 启动标记:设置以后,如果activity 已经启动。

而且位于历史堆栈的顶端,将不再启动(不重新启动)activity。2 0×00000002 String STATISTICS_REPORT_ACTION 广播:要求receivers 报告自己的统计信息。“android.intent.action.STATISTICS_REPORT”

String STATISTICS_STATE_CHANGED_ACTION 广播:统计信息服务的状态已经改变。“android.intent.action.STATISTICS_STATE_CHANGED”

String SYNC_ACTION 动作:执行数据同步。“android.intent.action.SYNC”

String TAB_CATEGORY 类别:这个activity 应该在TabActivity 中作为一个tab 使用。“android.intent.category.TAB”

String TEMPLATE_EXTRA 附加数据:新记录的初始化模板。

“android.intent.extra.TEMPLATE”

String TEST_CATEGORY 类别:作为测试目的使用,不是正常的用户体验的一部分。“android.intent.category.TEST”

String TIMEZONE_CHANGED_ACTION 广播:时区已经改变。

“android.intent.action.TIMEZONE_CHANGED”

String TIME_CHANGED_ACTION 广播:时间已经改变(重新设置)。

“android.intent.action.TIME_SET”

String TIME_TICK_ACTION 广播:当前时间已经变化(正常的时间流逝)。“android.intent.action.TIME_TICK”

String UMS_CONNECTED_ACTION 广播:设备进入USB 大容量存储模式。“android.intent.action.UMS_CONNECTED”

String UMS_DISCONNECTED_ACTION 广播:设备从USB 大容量存储模式退出。“android.intent.action.UMS_DISCONNECTED”

String UNIT_TEST_CATEGORY 类别:应该被用作单元测试(通过test harness 运行)。“android.intent.category.UNIT_TEST”

String VIEW_ACTION 动作:向用户显示数据。“android.intent.action.VIEW”

String WALLPAPER_CATEGORY 类别:这个activity 能过为设备设置墙纸。“android.intent.category.WALLPAPER”

String WALLPAPER_CHANGED_ACTION 广播:系统的墙纸已经改变。“android.intent.action.WALLPAPER_CHANGED”

String WALLPAPER_SETTINGS_ACTION 动作:显示选择墙纸的设置界面。输入:无。“android.intent.action.WALLPAPER_SETTINGS”

String WEB_SEARCH_ACTION 动作:执行web 搜索。

“android.intent.action.WEB_SEARCH”

String XMPP_CONNECTED_ACTION 广播:XMPP 连接已经被建立。“android.intent.action.XMPP_CONNECTED”

String XMPP_DISCONNECTED_ACTION 广播:XMPP 连接已经被断开。“android.intent.action.XMPP_DI

=================================================================== ==========

Activity总是要来回跳转的,发现积累个ACTION列表是必要的...

1. 电话

(1) 拔打一个号码,号码为传入参数

TelephonyManager tm =(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

if(tm.getCallState()== TelephonyManager.CALL_STATE_IDLE){ //其实,这个

可以不要的,只是判断一下当前phone的状态,如果为IDLE,才允许呼叫~

Intent callIntent =new Intent(Intent.ACTION_CALL_PRIVILEGED,Uri.fromParts("tel", mNumber,null));

startActivity(callIntent);

}

2. 短信

(1) 发送短信给一个号码,号码为传入参数

Intent SMSIntent =new Intent(Intent.ACTION_SENDTO,

Uri.fromParts(Constants.SCHEME_SMSTO,Number, null));

startActivity(SMSIntent);

(2) 通过短信将一个内容发送出去,内容为传入参数

Intent sendIntent =new Intent(Intent.ACTION_SEND);

sendIntent.setType("text/plain");

sendIntent.putExtra("sms_body","sms body");

//这个。。有可能系统会让选择用蓝牙还是信息

3.

附:2.2源码中的ACTION定义

androidsrc>grep ACTION_

frameworks/base/core/java/android/content/Intent.java|grep String public static final String ACTION_MAIN ="android.intent.action.MAIN";

public static final String ACTION_VIEW ="android.intent.action.VIEW";

public static final String ACTION_DEFAULT = ACTION_VIEW;

public static final String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";

public static final String ACTION_EDIT ="android.intent.action.EDIT";

public static final String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT";

public static final String ACTION_PICK ="android.intent.action.PICK";

public static final String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT";

public static final String ACTION_CHOOSER = "android.intent.action.CHOOSER";

public static final String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT";

public static final String ACTION_DIAL ="android.intent.action.DIAL";

public static final String ACTION_CALL ="android.intent.action.CALL";

public static final String ACTION_CALL_EMERGENCY = "android.intent.action.CALL_EMERGENCY";

public static final String ACTION_CALL_PRIVILEGED = "android.intent.action.CALL_PRIVILEGED";

public static final String ACTION_IP_CALL_PRIVILEGED = "android.intent.action.IP_CALL_PRIVILEGED";

public static final String ACTION_SENDTO = "android.intent.action.SENDTO";

public static final String ACTION_SEND ="android.intent.action.SEND";

public static final String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE";

public static final String ACTION_ANSWER = "android.intent.action.ANSWER";

public static final String ACTION_INSERT = "android.intent.action.INSERT";

public static final String ACTION_DELETE = "android.intent.action.DELETE";

public static final String ACTION_RUN ="android.intent.action.RUN";

public static final String ACTION_SYNC ="android.intent.action.SYNC";

public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY";

public static final String ACTION_SEARCH = "android.intent.action.SEARCH";

public static final String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL";

public static final String ACTION_WEB_SEARCH =

"android.intent.action.WEB_SEARCH";

public static final String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";

public static final String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER";

public static final String ACTION_BUG_REPORT = "android.intent.action.BUG_REPORT";

public static final String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST";

public static final String ACTION_CALL_BUTTON = "android.intent.action.CALL_BUTTON";

public static final String ACTION_VOICE_COMMAND = "android.intent.action.VOICE_COMMAND";

public static final String ACTION_SEARCH_LONG_PRESS = "android.intent.action.SEARCH_LONG_PRESS";

public static final String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";

public static final String ACTION_POWER_USAGE_SUMMARY = "android.intent.action.POWER_USAGE_SUMMARY";

public static final String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP";

public static final String ACTION_SCREEN_OFF = "android.intent.action.SCREEN_OFF";

public static final String ACTION_SCREEN_ON = "android.intent.action.SCREEN_ON";

public static final String ACTION_USER_PRESENT = "https://www.sodocs.net/doc/1d12646217.html,ER_PRESENT";

public static final String ACTION_TIME_TICK = "android.intent.action.TIME_TICK";

public static final String ACTION_TIME_CHANGED = "android.intent.action.TIME_SET";

public static final String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED";

public static final String ACTION_TIMEZONE_CHANGED = "android.intent.action.TIMEZONE_CHANGED";

public static final String ACTION_ALARM_CHANGED = "android.intent.action.ALARM_CHANGED";

public static final String ACTION_SYNC_STATE_CHANGED

public static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";

public static final String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS";

public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";

public static final String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED";

public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED";

public static final String ACTION_PACKAGE_REMOVED = "android.intent.action.PACKAGE_REMOVED";

public static final String ACTION_PACKAGE_CHANGED = "android.intent.action.PACKAGE_CHANGED";

public static final String ACTION_QUERY_PACKAGE_RESTART = "android.intent.action.QUERY_PACKAGE_RESTART";

public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED";

public static final String ACTION_PACKAGE_DATA_CLEARED = "android.intent.action.PACKAGE_DATA_CLEARED";

public static final String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";

public static final String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = public static final String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = public static final String ACTION_WALLPAPER_CHANGED = "android.intent.action.WALLPAPER_CHANGED";

public static final String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED";

public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";

public static final String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";

public static final String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";

public static final String ACTION_BATTERY_OKAY = "android.intent.action.BATTERY_OKAY";

public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";

public static final String ACTION_POWER_DISCONNECTED =

public static final String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";

public static final String ACTION_REQUEST_SHUTDOWN = "android.intent.action.ACTION_REQUEST_SHUTDOWN";

public static final String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW";

public static final String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK";

public static final String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE";

public static final String ACTION_UMS_CONNECTED =

"android.intent.action.UMS_CONNECTED";

public static final String ACTION_UMS_DISCONNECTED = "android.intent.action.UMS_DISCONNECTED";

public static final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";

public static final String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";

public static final String ACTION_MEDIA_CHECKING = "android.intent.action.MEDIA_CHECKING";

public static final String ACTION_MEDIA_NOFS = "android.intent.action.MEDIA_NOFS";

public static final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";

public static final String ACTION_MEDIA_SHARED = "android.intent.action.MEDIA_SHARED";

public static final String ACTION_MEDIA_UNSHARED = "android.intent.action.MEDIA_UNSHARED";

public static final String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";

public static final String ACTION_MEDIA_UNMOUNTABLE = "android.intent.action.MEDIA_UNMOUNTABLE";

public static final String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";

public static final String ACTION_MEDIA_SCANNER_STARTED = "android.intent.action.MEDIA_SCANNER_STARTED";

public static final String ACTION_MEDIA_SCANNER_FINISHED = "android.intent.action.MEDIA_SCANNER_FINISHED";

public static final String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE";

public static final String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON";

public static final String ACTION_CAMERA_BUTTON = "android.intent.action.CAMERA_BUTTON";

public static final String ACTION_GTALK_SERVICE_CONNECTED =

public static final String ACTION_GTALK_SERVICE_DISCONNECTED =

public static final String ACTION_INPUT_METHOD_CHANGED =

public static final String ACTION_AIRPLANE_MODE_CHANGED = "android.intent.action.AIRPLANE_MODE";

public static final String ACTION_PROVIDER_CHANGED =

public static final String ACTION_HEADSET_PLUG =

public static final String ACTION_NEW_OUTGOING_CALL =

public static final String ACTION_REBOOT =

public static final String ACTION_DOCK_EVENT =

public static final String ACTION_REMOTE_INTENT =

public static final String ACTION_PRE_BOOT_COMPLETED =

标准的Activity Actions

ACTION_MAIN 作为一个主要的进入口,而并不期望去接受数据

ACTION_VIEW 向用户去显示数据

ACTION_ATTACH_DATA 别用于指定一些数据应该附属于一些其他的地方,例如,图片数据应该附属于联系人

ACTION_EDIT 访问已给的数据,提供明确的可编辑ACTION_PICK 从数据中选择一个子项目,并返回你所选中的项目

ACTION_CHOOSER 显示一个activity选择器,允许用户在进程之前选择他们想要的

ACTION_GET_CONTENT 允许用户选择特殊种类的数据,并返回(特殊种类的数据:照一张相片或录一段音)

ACTION_DIAL 拨打一个指定的号码,显示一个带有号码的用户界面,允许用户去启动呼叫

ACTION_CALL 根据指定的数据执行一次呼叫(ACTION_CALL在应用中启动一次呼叫有缺陷,多数应用ACTION_DIAL,ACTION_CALL 不能用在紧急呼叫上,紧急呼叫可以用ACTION_DIAL来实现)

ACTION_SEND 传递数据,被传送的数据没有指定,接收的action请求用户发数据

ACTION_SENDTO 发送一跳信息到指定的某人

ACTION_ANSWER 处理一个打进电话呼叫

ACTION_INSERT 插入一条空项目到已给的容器

ACTION_DELETE 从容器中删除已给的数据

ACTION_RUN 运行数据,无论怎么

ACTION_SYNC 同步执行一个数据

ACTION_PICK_ACTIVITY 为已知的Intent选择一个Activity,返回别选中的类

ACTION_SEARCH 执行一次搜索

ACTION_WEB_SEARCH 执行一次web搜索

ACTION_FACTORY_TEST 工场测试的主要进入点,

安卓按钮单击事件

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!! 对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。 第二种:内部类作为监听器 将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!! 第三种:Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity 的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。 上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。 第四种:外部类作为监听器 ButtonTest类 当用户单击button按钮时,程序将会触发MyButtonListener监听器 外部MyButtonListener类

AndroidUI基本控件与事件处理

《Android基础应用》 AndroidUI基本控件与事件处理 ?本章任务 ?使用Android开发本息计算器程序 ?使用Android开发华氏-摄氏温度转换器 ?本章目标 ?熟悉掌握本章基本控件的使用 ?熟练掌握Android常用事件 1.Android基本控件 Android应用开发的一项内容就是用户界面的开发,Android提供了大量功能丰富的UI组件,大部分放在android.widget包及其子包android.view包及其子包 在Android当中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类而实现的。如Button(按钮),list(列表),EditText(编辑框),RadioButton(多选按钮),Checkbox(选择框)等都是View类 在Android中,我们可以在Xml文件中使用UI组件也可以在java文件中创建UI组件官方建议采用xml方式,这样的话能够实现界面和代码分离 1.1TextView和EditText TextView是一种用于显示字符串的控件 EditText则是用来输入和编辑字符串的控件,EditText是一个具有编辑功能的TextView

TextView和EditText基本属性 ●android:id设置ID,通过编码可以找到这个组件 ●android:layout_width设置在屏幕上的宽度 ●android:layout_height设置在屏幕上的高度 fill_parent强制性地使构件扩展,以填充布局单元内尽可能多的空间 wrap_content强制性地使视图扩展以显示全部内容 ●android:text设置显示的文本信息 ●android:textColor设置文本颜色 ●android:textSize设置文本尺寸

Android OnTouchListener触屏事件接口

Android OnTouchListener触屏事件接口 OnTouchListener接口是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。该接口中的监听方法签名如下。 Java代码: public boolean onT ouch(View v, MotionEvent event) 参数v:参数v同样为事件源对象。 参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。 节中介绍了一个在屏幕中拖动矩形移动的案例,本节将继续采用该案例的思路,通过监听接口的方式实现在屏幕上拖动按钮移动的案例。开发步骤如下。 创建一个名为Sample的Android项目。 准备字符串资源,打开strings.xml文件,用下列代码替换原有代码。 Java代码: Hello World, Sample Sample 位置 说明:与前面介绍的案例相同,对程序中用到的字符串资源进行定义。 开发布局文件。打开res/layout目录下的main.xml,用下列代码替换其原有代码。

Java代码: