关于 android receiver
2015-11-06 09:38
513 查看
可以在代码文件中声明一个receiver,也可以在manifest中声明一个,前者中的receiver只有在该activity launch起来以后才会监听其所感兴趣的事件,而如果在androidManifext.xml中声明的话,就不受限制,随时可以监听感兴趣的事件。 1.
首先谈谈在androidManifext.xml中注册一个receiver, 例如我们想监听相机按钮按下事件的发生,并且发生后调用我们的camera程序
<receiver android:name="CameraButtonIntentReceiver"> <intent-filter>
可以在代码文件中声明一个receiver,也可以在manifest中声明一个,前者中的receiver只有在该activity launch起来以后才会监听其所感兴趣的事件,而如果在androidManifext.xml中声明的话,就不受限制,随时可以监听感兴趣的事件。 1.首先谈谈在androidManifext.xml中注册一个receiver, 例如我们想监听相机按钮按下事件的发生,并且发生后调用我们的camera程序
<receiver android:name="CameraButtonIntentReceiver"> <intent-filter> <action android:name="android.intent.action.CAMERA_BUTTON"/> </intent-filter> </receiver>
另外,当程序需要使用手机相关的服务, 如电话、短信、因特网等功能时,就得在Manifest中添加对于的user-permission。
在这个配置文件中声明了一个receiver用来监听相机的按键事件,所以还需要在代码文件定义与配置文件中同名的receiver:
public class CameraButtonIntentReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) { Intent i = new Intent(Intent.ACTION_MAIN); i.setClass(context, Camera.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }
2. 关于另外一种,在代码中注册一个receiver,例如我们想在代码文件中监听电池电量的变化,就可以按照如下方法 private final BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {
String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { …
} } }
这种方法需要在onCreate 或者onStart中注册该receiver所感兴趣的intent,如: registerReceiver(mBatteryReceiver, Intent.ACTION_BATTERY_CHANGED);
在onStop及onDestroy中注销监听
unregisterReceiver(mBatteryReceiver, Intent.ACTION_BATTERY_CHANGED);
系统广播可以捕捉系统发出的行为有: 1. “android.provider.Telephony.SMS_RECEIVED” 收到短信 2. Intent.ACTION_BATTERY_CHANGED 剩余的手机电池量 3. Intent.ACTION_MEDIA_MOUNTED SD卡成功挂载 4. Intent.ACTION_MEDIA_UNMOUNTED SD卡未挂载
5. Intent.ACTION_NEW_OUTGOING_CALL拨打电话 6. Intent.ACTION_PACKAGE_ADDED执行安装 7. Intent.ACTION_PACKAGE_REMOVED 执行卸载
相关文章推荐
- Android 请求码与结果码
- Android牟利之道(一)--界面嵌入有米广告
- 将指定路径的图片,显示在android系统相册中
- Android接入融云sdk流程(思路)
- Android开发之自定义控件(一)---onMeasure详解
- Android完美解析setContentView 你真的理解setContentView吗?
- android 怎么不让editview获取到焦点
- Android Manifest <meta-data>
- 【Android】文件操作工具类(FileUtil.java)
- Android系列教程之EditText使用详解-包含很多教程上看不到的功能演示
- Android实现点击通知栏后,先启动应用再打开目标Activity
- Android中selector的使用
- Android PackageManagerService流程详细分析(六)之优化系统库
- Android 触摸事件传递机制
- Android解析大图
- Android Activity间数据传输
- Android音乐播放器(2)从SD卡中读取音乐
- android82 文件下载框架xUtils
- android模拟器,Genymotion问题:Unable to start the virtual device.
- android状态机statemachine详解