1. 自定义自已的Broadcast receiver:
public class myReceiver extends BroadcastReceiver{
@Override
public void onReceive (Context context, Intent intent) {
if (intent.getAction().equals("com.spreadcomm.myparceltest.test")){
Toast.makeText(context, "This is from brodcast!", Toast.LENGTH_SHORT).show();
}
else if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
Toast.makeText(context, "Charing up!", Toast.LENGTH_LONG).show();
}
}
}
2. 注册Receiver:
a. 通过context:
registerReceiver (BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)
b. 通过Manifest.xml:
<activity android:name=".myParceTest" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".myReceiver">
<intent-filter>
<action android:name="com.myparceltest.test" />
</intent-filter>
</receiver>
3. 发送Broadcast:
4. Anroid 提供的Brodcast Action
ACTION_TIME_TICK | 每分钟发送,表明时间在运行 |
ACTION_TIME_CHANGED | 当用户更改了设备上的时间时发送 |
ACTION_TIMEZONE_CHANGED | 当用更改了设备上的时区时发送 |
ACTION_BOOT_COMPLETED | 当设备启动完成了以后 |
ACTION_PACKAGE_ADDED | 当添加了新的包到设备上时发送 |
ACTION_PACKAGE_REMOVED | 当删除一个包时发送 |
ACTION_PACKAGE_CHANGED | 当包被更改时,如disable 改为 |
ACTION_PACKAGE_RESTARTED | 当程序被中断,重新打开的时候 |
ACTION_UID_REMOVED | 一个UID从系统删除的时候 |
ACTION_SHUTDOWN | 关机的时候 |
ACTION_POWER_DISCONNECTED | 断开连接电源 |
ACTION_POWER_CONNECTED | 连接外部电源时 |
ACTION_BATTERY_CHANGED | 当电池的状态,充电改变时发送 |
ACTION_PACKAGE_DATA_CLEARED | The user has cleared the data of a package. This should be preceded by ACTION_PACKAGE_RESTARTED , after which all of its persistent data is erased and this broadcast sent. Note that the cleared package does not receive this broadcast. |
Api Level 3:(SDK 1.5)
- android.bluetooth.a2dp.intent.action.SINK_STATE_CHANGED
- android.bluetooth.intent.action.BLUETOOTH_STATE_CHANGED
- android.bluetooth.intent.action.BOND_STATE_CHANGED_ACTION
- android.bluetooth.intent.action.DISCOVERY_COMPLETED
- android.bluetooth.intent.action.DISCOVERY_STARTED
- android.bluetooth.intent.action.HEADSET_ADUIO_STATE_CHANGED
- android.bluetooth.intent.action.HEADSET_STATE_CHANGED
- android.bluetooth.intent.action.NAME_CHANGED
- android.bluetooth.intent.action.PAIRING_CANCEL
- android.bluetooth.intent.action.PAIRING_REQUEST
- android.bluetooth.intent.action.REMOTE_DEVICE_CONNECTED
- android.bluetooth.intent.action.REMOTE_DEVICE_DISAPPEARED
- android.bluetooth.intent.action.REMOTE_DEVICE_DISAPPEARED
- android.bluetooth.intent.action.REMOTE_DEVICE_DISCONNECTED
- android.bluetooth.intent.action.REMOTE_DEVICE_DISCONNECT_REQUESTED
- android.bluetooth.intent.action.REMOTE_DEVICE_FOUND
- android.bluetooth.intent.action.REMOTE_NAME_FAILED
- android.bluetooth.intent.action.REMOTE_NAME_UPDATED
- android.bluetooth.intent.action.SCAN_MODE_CHANGED
- android.intent.action.AIRPLANE_MODE
- android.intent.action.BATTERY_CHANGED
- android.intent.action.BATTERY_LOW
- android.intent.action.BOOT_COMPLETED
- android.intent.action.CAMERA_BUTTON
- android.intent.action.CONFIGURATION_CHANGED
- android.intent.action.DATA_SMS_RECEIVED
- android.intent.action.DATE_CHANGED
- android.intent.action.DEVICE_STORAGE_LOW
- android.intent.action.DEVICE_STORAGE_OK
- android.intent.action.GTALK_CONNECTED
- android.intent.action.GTALK_DISCONNECTED
- android.intent.action.HEADSET_PLUG
- android.intent.action.INPUT_METHOD_CHANGED
- android.intent.action.MANAGE_PACKAGE_STORAGE
- android.intent.action.MEDIA_BAD_REMOVAL
- android.intent.action.MEDIA_BUTTON
- android.intent.action.MEDIA_CHECKING
- android.intent.action.MEDIA_EJECT
- android.intent.action.MEDIA_MOUNTED
- android.intent.action.MEDIA_NOFS
- android.intent.action.MEDIA_REMOVED
- android.intent.action.MEDIA_SCANNER_FINISHED
- android.intent.action.MEDIA_SCANNER_SCAN_FILE
- android.intent.action.MEDIA_SCANNER_STARTED
- android.intent.action.MEDIA_SHARED
- android.intent.action.MEDIA_UNMOUNTABLE
- android.intent.action.MEDIA_UNMOUNTED
- android.intent.action.NEW_OUTGOING_CALL
- android.intent.action.PACKAGE_ADDED
- android.intent.action.PACKAGE_CHANGED
- android.intent.action.PACKAGE_DATA_CLEARED
- android.intent.action.PACKAGE_INSTALL
- android.intent.action.PACKAGE_REMOVED
- android.intent.action.PACKAGE_REPLACED
- android.intent.action.PACKAGE_RESTARTED
- android.intent.action.PHONE_STATE
- android.intent.action.PROVIDER_CHANGED
- android.intent.action.REBOOT
- android.intent.action.SCREEN_OFF
- android.intent.action.SCREEN_ON
- android.intent.action.TIMEZONE_CHANGED
- android.intent.action.TIME_SET
- android.intent.action.TIME_TICK
- android.intent.action.UID_REMOVED
- android.intent.action.UMS_CONNECTED
- android.intent.action.UMS_DISCONNECTED
- android.intent.action.USER_PRESENT
- android.intent.action.WALLPAPER_CHANGED
- android.media.AUDIO_BECOMING_NOISY
- android.media.RINGER_MODE_CHANGED
- android.media.VIBRATE_SETTING_CHANGED
- android.net.conn.BACKGROUND_DATA_SETTING_CHANGED
- android.net.wifi.NETWORK_IDS_CHANGED
- android.net.wifi.RSSI_CHANGED
- android.net.wifi.SCAN_RESULTS
- android.net.wifi.STATE_CHANGE
- android.net.wifi.WIFI_STATE_CHANGED
- android.net.wifi.supplicant.CONNECTION_CHANGE
- android.net.wifi.supplicant.STATE_CHANGE
- android.provider.Telephony.SIM_FULL
- android.provider.Telephony.SMS_RECEIVED
- android.provider.Telephony.WAP_PUSH_RECEIVED
- com.google.gservices.intent.action.GSERVICES_CHANGED
android.bluetooth.a2dp.intent.action.SINK_STATE_CHANGED android.bluetooth.intent.action.BLUETOOTH_STATE_CHANGED android.bluetooth.intent.action.BOND_STATE_CHANGED_ACTION android.bluetooth.intent.action.DISCOVERY_COMPLETED android.bluetooth.intent.action.DISCOVERY_STARTED android.bluetooth.intent.action.HEADSET_ADUIO_STATE_CHANGED android.bluetooth.intent.action.HEADSET_STATE_CHANGED android.bluetooth.intent.action.NAME_CHANGED android.bluetooth.intent.action.PAIRING_CANCEL android.bluetooth.intent.action.PAIRING_REQUEST android.bluetooth.intent.action.REMOTE_DEVICE_CONNECTED android.bluetooth.intent.action.REMOTE_DEVICE_DISAPPEARED android.bluetooth.intent.action.REMOTE_DEVICE_DISAPPEARED android.bluetooth.intent.action.REMOTE_DEVICE_DISCONNECTED android.bluetooth.intent.action.REMOTE_DEVICE_DISCONNECT_REQUESTED android.bluetooth.intent.action.REMOTE_DEVICE_FOUND android.bluetooth.intent.action.REMOTE_NAME_FAILED android.bluetooth.intent.action.REMOTE_NAME_UPDATED android.bluetooth.intent.action.SCAN_MODE_CHANGED android.intent.action.AIRPLANE_MODE android.intent.action.BATTERY_CHANGED android.intent.action.BATTERY_LOW android.intent.action.BOOT_COMPLETED android.intent.action.CAMERA_BUTTON android.intent.action.CONFIGURATION_CHANGED android.intent.action.DATA_SMS_RECEIVED android.intent.action.DATE_CHANGED android.intent.action.DEVICE_STORAGE_LOW android.intent.action.DEVICE_STORAGE_OK android.intent.action.GTALK_CONNECTED android.intent.action.GTALK_DISCONNECTED android.intent.action.HEADSET_PLUG android.intent.action.INPUT_METHOD_CHANGED android.intent.action.MANAGE_PACKAGE_STORAGE android.intent.action.MEDIA_BAD_REMOVAL android.intent.action.MEDIA_BUTTON android.intent.action.MEDIA_CHECKING android.intent.action.MEDIA_EJECT android.intent.action.MEDIA_MOUNTED android.intent.action.MEDIA_NOFS android.intent.action.MEDIA_REMOVED android.intent.action.MEDIA_SCANNER_FINISHED android.intent.action.MEDIA_SCANNER_SCAN_FILE android.intent.action.MEDIA_SCANNER_STARTED android.intent.action.MEDIA_SHARED android.intent.action.MEDIA_UNMOUNTABLE android.intent.action.MEDIA_UNMOUNTED android.intent.action.NEW_OUTGOING_CALL android.intent.action.PACKAGE_ADDED android.intent.action.PACKAGE_CHANGED android.intent.action.PACKAGE_DATA_CLEARED android.intent.action.PACKAGE_INSTALL android.intent.action.PACKAGE_REMOVED android.intent.action.PACKAGE_REPLACED android.intent.action.PACKAGE_RESTARTED android.intent.action.PHONE_STATE android.intent.action.PROVIDER_CHANGED android.intent.action.REBOOT android.intent.action.SCREEN_OFF android.intent.action.SCREEN_ON android.intent.action.TIMEZONE_CHANGED android.intent.action.TIME_SET android.intent.action.TIME_TICK android.intent.action.UID_REMOVED android.intent.action.UMS_CONNECTED android.intent.action.UMS_DISCONNECTED android.intent.action.USER_PRESENT android.intent.action.WALLPAPER_CHANGED android.media.AUDIO_BECOMING_NOISY android.media.RINGER_MODE_CHANGED android.media.VIBRATE_SETTING_CHANGED android.net.conn.BACKGROUND_DATA_SETTING_CHANGED android.net.wifi.NETWORK_IDS_CHANGED android.net.wifi.RSSI_CHANGED android.net.wifi.SCAN_RESULTS android.net.wifi.STATE_CHANGE android.net.wifi.WIFI_STATE_CHANGED android.net.wifi.supplicant.CONNECTION_CHANGE android.net.wifi.supplicant.STATE_CHANGE android.provider.Telephony.SIM_FULL android.provider.Telephony.SMS_RECEIVED android.provider.Telephony.WAP_PUSH_RECEIVED com.google.gservices.intent.action.GSERVICES_CHANGED
Api Level 4增加的:(SDK 1.6)
- android.intent.action.ACTION_POWER_CONNECTED
- android.intent.action.ACTION_POWER_DISCONNECTED
- android.intent.action.ACTION_SHUTDOWN
- android.intent.action.BATTERY_OKAY
- android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED
- android.speech.tts.engine.TTS_DATA_INSTALLED
- com.google.gservices.intent.action.GSERVICES_OVERRIDE
android.intent.action.ACTION_POWER_CONNECTED android.intent.action.ACTION_POWER_DISCONNECTED android.intent.action.ACTION_SHUTDOWN android.intent.action.BATTERY_OKAY android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED android.speech.tts.engine.TTS_DATA_INSTALLED com.google.gservices.intent.action.GSERVICES_OVERRIDE
Api Level 5(SDK 2.0)蓝牙部分全部修改,修改后的
- android.bluetooth.a2dp.action.SINK_STATE_CHANGED
- android.bluetooth.adapter.action.DISCOVERY_FINISHED
- android.bluetooth.adapter.action.DISCOVERY_STARTED
- android.bluetooth.adapter.action.LOCAL_NAME_CHANGED
- android.bluetooth.adapter.action.SCAN_MODE_CHANGED
- android.bluetooth.adapter.action.STATE_CHANGED
- android.bluetooth.device.action.ACL_CONNECTED
- android.bluetooth.device.action.ACL_DISCONNECTED
- android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED
- android.bluetooth.device.action.BOND_STATE_CHANGED
- android.bluetooth.device.action.CLASS_CHANGED
- android.bluetooth.device.action.FOUND
- android.bluetooth.device.action.NAME_CHANGED
- android.bluetooth.devicepicker.action.DEVICE_SELECTED
- android.bluetooth.devicepicker.action.LAUNCH
- android.bluetooth.headset.action.AUDIO_STATE_CHANGED
- android.bluetooth.headset.action.STATE_CHANGED
android.bluetooth.a2dp.action.SINK_STATE_CHANGED android.bluetooth.adapter.action.DISCOVERY_FINISHED android.bluetooth.adapter.action.DISCOVERY_STARTED android.bluetooth.adapter.action.LOCAL_NAME_CHANGED android.bluetooth.adapter.action.SCAN_MODE_CHANGED android.bluetooth.adapter.action.STATE_CHANGED android.bluetooth.device.action.ACL_CONNECTED android.bluetooth.device.action.ACL_DISCONNECTED android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED android.bluetooth.device.action.BOND_STATE_CHANGED android.bluetooth.device.action.CLASS_CHANGED android.bluetooth.device.action.FOUND android.bluetooth.device.action.NAME_CHANGED android.bluetooth.devicepicker.action.DEVICE_SELECTED android.bluetooth.devicepicker.action.LAUNCH android.bluetooth.headset.action.AUDIO_STATE_CHANGED android.bluetooth.headset.action.STATE_CHANGED
然后增加的有
- android.intent.action.DOCK_EVENT
- android.provider.Telephony.SMS_REJECTED
android.intent.action.DOCK_EVENT android.provider.Telephony.SMS_REJECTED
Api Level 6(SDK 2.0.1)没有改变。
Api Level 7(SDK 2.1)增加的:
- android.intent.action.LOCALE_CHANGED
android.intent.action.LOCALE_CHANGED
Api Level 8(SDK 2.2)增加的:
- android.app.action.ACTION_PASSWORD_CHANGED
- android.app.action.ACTION_PASSWORD_FAILED
- android.app.action.ACTION_PASSWORD_SUCCEEDED
- android.app.action.DEVICE_ADMIN_DISABLED
- android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED
- android.app.action.DEVICE_ADMIN_ENABLED
- android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE
- android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE
- android.media.SCO_AUDIO_STATE_CHANGED
android.app.action.ACTION_PASSWORD_CHANGED android.app.action.ACTION_PASSWORD_FAILED android.app.action.ACTION_PASSWORD_SUCCEEDED android.app.action.DEVICE_ADMIN_DISABLED android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED android.app.action.DEVICE_ADMIN_ENABLED android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE android.media.SCO_AUDIO_STATE_CHANGED