侦听Android手机ServiceState
来源:互联网 发布:ios和mac os区别 编辑:程序博客网 时间:2024/06/06 21:02
田海立
2012-03-16
有些时候,需要侦听手机的ServiceState,本文从应用开发的角度,给出侦听Android系统手机ServiceState的方法:侦听广播TelephonyIntents.ACTION_SERVICE_STATE_CHANGED;在TelephonyManager中注册ListenerPhoneStateListener。
一、通过侦听广播
Android内部定义了ServiceState变化时,系统发出的广播(Action:TelephonyIntents.ACTION_SERVICE_STATE_CHANGED)。所以,如果要接收ServiceState的通知,可以通过代码注册
IntentFilter intentFilter = newIntentFilter(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED);// registerReceiver()是ContextWrapper定义的方法,子类中实现registerReceiver(receiver, intentFilter);
receiver是BroadcastReceiver,在其onReceive(Contextcontext, Intent intent)中,就可以侦听到ServiceState的变化:
onReceive(Context context, Intent intent) {String action = intent.getAction();if(action.equals(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED)) { ServiceState ss = ServiceState.newFromBundle(intent.getExtras()) switch(ss.getState()) { case ServiceState.STATE_IN_SERVICE: //handle for … break; case … break;} else if () { //other broadcasts…}}
在不用的时候,记得取消注册。而要接收这个广播,需要READ_PHONE_STATE的permission。
不过注意:这样的侦听方式,只能针对能看到底层的开发者,对于纯应用开发者来说是不行的。因为,TelephonyIntents是在com.android.intenal.telephony中定义的,而这个包是隐藏的。
二、注册Listener
既然com.android.intenal.telephony是隐藏的,给Android内部实现用的,那看外部exported的接口有什么。有一个android.telephony的包,里面有TelephonyManager。
通过TelephonyManager可以注册Listener来侦听ServiceState的变化。
TelephonyManager并不能直接被实例化,要获取它的实例,需要通过Context.getSystemService(),注册Listener通过listen(),其中的events是PhoneStateListener.LISTEN_xxx的bitmask:
TelephonyManager telMgr =(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);telMgr.listen(mPhoneStateListener,PhoneStateListener.LISTEN_SERVICE_STATE);
在mPhoneStateListener这个PhoneStateListener中overrideonServiceStateChanged(ServiceState serviceState)方法就可以了。
- 侦听Android手机ServiceState
- 侦听Android手机ServiceState
- 侦听Android手机ServiceState
- developer.Android.com:PhoneStateListener :onServiceStateChanged(ServiceState serviceState)
- Android手机计步器中加速度传感器熄屏时的侦听
- 应用获得Android Phone ServiceState的方法
- Android中Telephony学习笔记(7)-ServiceState
- android 侦听文件变化
- android sdcard 内容侦听
- android 侦听home键
- android触摸事件侦听
- How to get Android Phone ServiceState - APK应用如何获得Android Phone的ServiceState,两种方法
- ServiceState学习
- Blackberry手机客户端应用侦听代码
- android 系统的电池侦听
- Android 侦听Usb或者SDCard热拔插事件
- Android Listener侦听的N种写法
- Android Listener侦听的N种写法
- ubuntu系统VNC服务器安装配置
- WP7“Navigation is not allowed when the task is not in the foreground.”解决方案
- 计算机进制转换
- 不安装Oracle客户端直接用PL/SQL连接Oracle
- Nightmare
- 侦听Android手机ServiceState
- OnPreferenceChangeListener分析,以及与OnPreferenceClickListener的区别
- Ruby简单的读写文件
- 数据库rac11.2.0.1升级到11.2.0.2遇到的问题(三)
- 排序算法---合并排序
- 用C写有面向对象特点的程序
- CIO如何获取内部信任资源?
- 实现分析 - Enemy
- rapidxml 使用手册2