手机安全卫士------显示来电归属地的操作
来源:互联网 发布:2015各省医药行业数据 编辑:程序博客网 时间:2024/05/10 11:46
思路:
1.由于我们不确定什么时候会有来电,所以,我们应该使用服务监听来电。
2.服务关闭的时候要取消监听
3.通过服务的开启和关闭控制设置页面上CheckBox状态。
通过服务来监听来电信息
- 创建一个类,继承自Service
- 在onCreate方法中,执行对来电的监听操作:
1) TelePhonyManager manager = getSystemService(TELEPHONY_SERVICE);
2) manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
其中,第一个参数为PhoneStateListener的对象。
第二个参数设置我们要监听神马~
写一个内部类,继承自PhoneStateListener
重写onCallStateChanged方法,这个方法会在会话发生变化时回调。
在其中判断状态是否为来电,如果为来电状态,获取来电号码,通过号码获取归属地。
最后,在onDestroy中,对监听服务进行关闭。
manager.listen(listener,PhoneStatListener.LISTEN_NONE);
具体实现代码:
public class CallService extends Service
{
private TelephonyManager manager;
private MyPhoneStateListener listener;
public CallService() {
}
public IBinder onBind(Intent intent) { return null;}private class MyPhoneStateListener extends PhoneStateListener{ //当电话状态发生变化的时候 , 回调 public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_RINGING: String location = QueryNumberUtils.getLocationByNumber(incomingNumber); Toast.makeText(getApplicationContext(),location,Toast.LENGTH_LONG).show(); break; } }}public void onCreate(){ super.onCreate(); //监听来电 manager = (TelephonyManager) getApplicationContext().getSystemService(TELEPHONY_SERVICE); manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);}public void onDestroy(){ super.onDestroy(); manager.listen(listener,PhoneStateListener.LISTEN_NONE); manager = null;}
}
判断Service是否开启
创建一个方法:
serviceIsWorking(Context context,String serviceName)
{
//获取一个管理器
ActivityManager am = context.getSystemService(Context.ACTIVITY_SERVICE);
//获得服务信息
List<RunningServiceInfo> infos = am.getRunningServices(100);
//遍历服务
for(RunningServiceInfo info : infos)
//通过info.service.getClassName() 和 服务类名进行对比
如果相同返回true。
}
判断一个服务是否开启
最终的实现代码:
public static boolean serviceIsWorking(Context context,String serviceName) { //创建一个组件管理器,获取到系统服务 ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); //获取到正在运行的服务信息 List<ActivityManager.RunningServiceInfo> infos = manager.getRunningServices(100); //遍历 if(infos != null) { for (ActivityManager.RunningServiceInfo info : infos) { //获取Service名字 String name = info.service.getClassName(); if (serviceName.equals(name)) { return true; } } } return false; }
- 手机安全卫士------显示来电归属地的操作
- 手机卫士14-显示来电归属地
- 来电归属地显示
- 37来电号码归属地的显示
- 100.来电归属地的显示
- 安全卫士第三天--20来点后显示手机归属地
- 手机安全卫士------查询号码归属地
- Android中来电号码归属地的显示
- Android项目:手机安全卫士(10)—— 电话归属地显示
- Android项目:手机安全卫士(10)—— 电话号码归属地显示
- 40_显示来电归属地,监听来电状态的服务
- 关闭来电归属地
- WM5/6不占内存的来电归属地显示软件
- 18、高级工具--显示来电与外拨电话号码的归属地
- 安全卫士分析--号码归属地
- android来电归属地提醒
- 96.来电归属地查询
- 38来电归属地的bug的解决
- iOS开发-关闭/收起键盘方法总结
- python设计模式之Builder模式
- 踏入职场的起点(连载二)
- 0x3f3f3f3f…编程中无穷大常量的设置技巧
- Android Toast工具类 解决Toast重复显示,Toast一直显示,在线程中可用
- 手机安全卫士------显示来电归属地的操作
- 2015年阿里巴巴校招客户端内推面试经历
- 【读书笔记】iOS-UIFont-如何知道字体的PostScript名称
- CodeForces 372A Counting Kangaroos is Fun 动物PK
- pylibmc客户端pool使用
- 【云快讯】之五十五《IBM推出Data Warehouse数据仓库云服务》
- hdu 1196(Lowest Bit)
- HDU 5317(2015多校第三场1002)
- UVA 714 - Copying Books