android项目手机卫士来电显示号码归属地

昨日实现了360手机卫士的来电显示归属地的功能,具体的功能就是当来电的时候,显示当前号码的归属地,学习之后发现操作

非常的简单,具体实现代码如下:

AddressService.java

package com.qingguow.mobilesafe.service; import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.widget.Toast; /** * 来电显示 * * @author taoshihan * */ public class AddressService extends Service { private TelephonyManager tm; private MyPhoneStateListener phoneStateListener; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } /** * 服务创建 */ @Override public void onCreate() { super.onCreate(); tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); phoneStateListener = new MyPhoneStateListener(); tm.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); } private class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_RINGING: String info = NumberQueryAddressUtil .queryAddress(incomingNumber); Toast.makeText(getApplicationContext(), info, 1).show(); break; default: break; } } } /** * 服务销毁 */ @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); //取消监听 tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE); phoneStateListener=null; } }

设置中心,配置是否开启来电归属地显示

直接使用我们之前定义好的组合控件

<com.qingguow.mobilesafe.ui.SettingItemView tsh:title="设置显示号码归属地" tsh:desc_on="设置显示号码归属地已开启" tsh:desc_off="设置显示号码归属地已关闭" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/siv_show_address"> </com.qingguow.mobilesafe.ui.SettingItemView>

获取到SettingItemView对象,我们自定义的控件,设置状态

调用SettingItemView对象的setOnClickListener()方法,设置点击事件,重写onClick方法

调用SettingItemView对象的isChecked()方法,得到当前是否选中

判断状态,调用SettingItemView对象的setChecked()方法,设置状态,参数:布尔值

调用startService()方法,开启监听手机状态的服务,参数:Intent对象,

调用stopService()方法,关闭服务

判断当前服务是否开启,设置控件的默认选中状态

新建一个工具类ServicesUtils.java

定义一个静态方法isServiceRunning(),传入参数:Context上下文,String服务名

调用Context对象的getSystemService()方法,获取ActivityManager对象,参数:Context.ACTIVITY_SERVICE

调用ActivityManager对象的getRunningServices()方法,得到运行的服务List集合,参数:int最大值

for循环List集合,每条是个RunningServiceInfo对象

调用RunningServiceInfo.servie.getClassName(),获取到String服务类名,判断一下如果相等返回true

SettingActivity.java

package com.qingguow.mobilesafe; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import com.qingguow.mobilesafe.service.AddressService; import com.qingguow.mobilesafe.ui.SettingItemView; import com.qingguow.mobilesafe.utils.ServiceUtils; public class SettingActivity extends Activity { private SettingItemView siv_item; private SharedPreferences sp; // 设置是否开启号码归属地 private SettingItemView showAddressBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting); // 设置号码归属地 showAddressBtn = (SettingItemView) findViewById(R.id.siv_show_address); if (ServiceUtils.isRunningService(this, "com.qingguow.mobilesafe.service.AddressService")) { showAddressBtn.setChecked(true); } else { showAddressBtn.setChecked(false); } showAddressBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (showAddressBtn.isChecked()) { showAddressBtn.setChecked(false); stopService(new Intent(getApplicationContext(), AddressService.class)); } else { showAddressBtn.setChecked(true); startService(new Intent(getApplicationContext(), AddressService.class)); } } }); siv_item = (SettingItemView) findViewById(R.id.siv_item); sp = getSharedPreferences("config", MODE_PRIVATE); // 根据保存的数据设置状态 boolean update = sp.getBoolean("update", false); if (update) { siv_item.setChecked(true); } else { siv_item.setChecked(false); } // 自动更新的点击事件 siv_item.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Editor editor = sp.edit(); if (siv_item.isChecked()) { // 设置不选中 siv_item.setChecked(false); editor.putBoolean("update", false); } else { // 设置选中 siv_item.setChecked(true); editor.putBoolean("update", true); } editor.commit(); } }); } }

ServicesUtils.java

package com.qingguow.mobilesafe.utils; import java.util.List; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.content.Context; /** * 服务工具类 * @author taoshihan * */ public class ServiceUtils { /** * 判断某服务是否开启 * @param context * @param serviceName * @return */ public static boolean isRunningService(Context context,String serviceName){ ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningServiceInfo> infos=am.getRunningServices(100); for(RunningServiceInfo info:infos){ String name=info.service.getClassName(); if(name.equals(serviceName)){ return true; } } return false; } }

设置效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-24 19:10:52

android项目手机卫士来电显示号码归属地的相关文章

android项目手机卫士来电显示号码归属地_Android

昨日实现了360手机卫士的来电显示归属地的功能,具体的功能就是当来电的时候,显示当前号码的归属地,学习之后发现操作 非常的简单,具体实现代码如下: AddressService.java package com.qingguow.mobilesafe.service; import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil; import android.app.Service; import android.content.Int

360手机卫士来电归属地在哪 来电归属地怎么设置

1.如果没有安装"360手机卫士"我们先下载安装一个,如果安装了,我们打开360手机卫士之后点击界面中的隐私保护,然后点击右上角三点符号,找到卫士设置 如下图所示. 2. 然后在打开360手机卫士设置找到"来电信息设置"选项, 我们点击它打开进入 3.接着我们再点击 对方来电秀平归属地开启 就可以了. 好了再来电时就会显示有归属地功能了,是不是非常的简单的呀.

来电显示修改:网络IP电话网关的漏洞

■ 核心提示 通信技术和计算机技术快速融合,通信网络在结构和功能上也发生了巨大变化,这种变化主要表现在通信网络的IP化和业务网络的开放性上,传统通信网络的基于硬件的管理模式已不能适应现代通信网络发展的需要,通信网络软件化成了未来发展趋势.在上述案件中,犯罪分子充分利用了通信网络中电话号码可以通过软件进行任意修改这一特性实施犯罪活动. 制作一个网关夹在主叫方与电信公司的网关中间,修改主叫号码后再把修改结果送入电信公司的网关系统中 手机上显示着好朋友的电话,接通后却是陌生人再说话,寒暄没几句就张口借

电信诈骗来电显示72变:专家称回拨可揭穿骗局

--专家提示回拨即可揭穿骗局 IT时报 潘少颖 骑白马的不必定是王子,他可能是唐僧:带翅膀的也不必定是天使,有可能是鸟人:打你手机和你通话的,不必定是你的朋友,有可能是骗子--年关将至,骗子又开始活跃起来,诈骗短信以及吸钱电话来袭.而现在他们的真面目也被更好地隐藏了,他们"傍"上了某些看上去很正宗的电话号码,比如10000. 10086乃至120.110等,让用户信以为真.防不胜防. 110.120等来电号码也可模拟 手机铃声响起,正在上班的聂先生看到来电显示号码为10086,他本身就

来电显示不可全信

随着通讯越来越发达,犯罪分子利用电信诈骗的手段也不断"翻新".专家提醒,不法分子通过软件可以任意设置来电号码,不要轻易相信来电显示号码,谨防电信诈骗. 据了解,不法分子通过软件可以任意设置来电号码,不要轻易相信来电显示号码.任意显号软件不支持回拨,即使犯罪嫌疑人来电的时候显示的是110或者10000号,但只要你回拨过去就会打不通,或者转接到真正的单位.犯罪分子提供的所谓的"固定电话"很可能是捆绑了犯罪分子手机的虚拟电话.当在接到来自亲友号码.公安机关电话号码以及11

360手机卫士:雾霾多发可别中了诈骗短信“霾”伏

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 "由于北京雾霾,您乘坐的航班被取消."近日,我国多地遭遇雾霾,电信诈骗也利用其做起了文章,福州刘小姐就因这类诈骗短信而被骗3000元.360手机安全专家提醒,收到"航班改签"类短信千万不要轻信,一定要通过正规渠道核实信息真伪,同时可通过360手机卫士对这类短信进行精准拦截. 2月23日,福州刘小姐收到关

电讯诈骗新花样来电显示“七十二变”

骑白马的不必定是王子,他可能是唐僧:带翅膀的也不必定是天使,有可能是鸟人:打你手机和你通话的,不必定是你的朋友,有可能是骗子--年关将至,骗子又开始活跃起来,诈骗短信以及吸钱电话来袭.而现在他们的真面目也被更好地隐藏了,他们"傍"上了某些看上去很正宗的电话号码,比如10000.10086乃至120.110等,让用户信以为真.防不胜防.110.120照样冒充 手机铃声响起,正在上班的聂先生看到来电显示号码为10086,他本身就是移动用户,就接了起来,对方报出了聂先生的全名,并询问了几个和

三大手机安全软件对比评测百度手机卫士成加速悍将

如果你是一名安卓手机用户,你一定对安卓手机又爱又恨:爱它,因为不用"卖肾"就能拥有它,玩游戏.看电影.网购.高清拍照都不误;恨它,则是因为没用多久手机卡慢问题就来了--拍照片.跑游戏永远差人一步.根据<中国智能手机用户使用情况调查报告>结果显示,国内使用手机的用户中,超过70%的人遇到过手机速度变慢或卡顿问题,手机卡慢已经成为用户最大痛点.那么,到底是什么原因导致手机卡慢呢?对此,专业人士分析指出,除了硬件配置因素外,导致手机变慢的原因还有手机CPU与内存的满载或资源占有率

浅析Android手机卫士之号码归属地查询_Android

使用小米号码归属地数据库,有两张表data1和data2 先查询data1表,把手机号码截取前7位 select outkey from data1 where id="前七位手机号" 再查询data2表, select location from data2 where id="上面查出的outkey" 可以使用子查询 select location from data2 where id=(select outkey from data1 where id=&q