手机卫士14-显示来电归属地

简介: 好啦,我们今天就要把号码归属地显示在有电话打进来的时候,其实也很简单的啦,我们只要开一个服务,监听电话的广播,然后在电话相应的状态,进行相应的操作就可以的啦 至于怎样把那个view显示到接听电话那个界面上,这个更简单啦,那个Toast是怎样显示的,我们就怎样显示就可以了。 我们打开Toast的源码,可以发现在一个静态的内部类TN里面,有这样一段代码




好啦,我们今天就要把号码归属地显示在有电话打进来的时候,其实也很简单的啦,我们只要开一个服务,监听电话的广播,然后在电话相应的状态,进行相应的操作就可以的啦

至于怎样把那个view显示到接听电话那个界面上,这个更简单啦,那个Toast是怎样显示的,我们就怎样显示就可以了。

我们打开Toast的源码,可以发现在一个静态的内部类TN里面,有这样一段代码

其实这一段就是设置好我们的Toast而已的代码啦,我们可以参照着来写一下

好啦,我们就要修改上一次写的AddressService这个类啦,

  1. package com.xiaobin.security.service;

  2. import android.app.Service;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.graphics.PixelFormat;
  6. import android.os.IBinder;
  7. import android.telephony.PhoneStateListener;
  8. import android.telephony.TelephonyManager;
  9. import android.view.WindowManager;
  10. import android.widget.TextView;

  11. import com.xiaobin.security.engine.NumberAddressService;

  12. public class AddressService extends Service
  13. {
  14.         private TelephonyManager telephonyManager;
  15.         private MyPhoneListener listener;
  16.         private WindowManager windowManager;
  17.         private TextView tv;

  18.         @Override
  19.         public IBinder onBind(Intent intent)
  20.         {
  21.                 return null;
  22.         }
  23.         
  24.         @Override
  25.         public void onCreate()
  26.         {
  27.                 super.onCreate();
  28.                 
  29.                 windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
  30.                 listener = new MyPhoneListener();
  31.                 telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
  32.                 telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
  33.         }
  34.         
  35.         @Override
  36.         public void onDestroy()
  37.         {
  38.                 super.onDestroy();
  39.                 //停止监听
  40.                 telephonyManager.listen(listener, PhoneStateListener.LISTEN_NONE);
  41.         }
  42.         
  43.         //显示归属地的窗体
  44.         private void showLocation(String address)
  45.         {
  46.                 WindowManager.LayoutParams params = new WindowManager.LayoutParams();
  47.                 params.width = WindowManager.LayoutParams.WRAP_CONTENT;
  48.                 params.height = WindowManager.LayoutParams.WRAP_CONTENT;
  49.                 params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE //无法获取焦点
  50.                                 | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE //无法点击
  51.                                 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;//保持屏幕亮
  52.                 params.format = PixelFormat.TRANSLUCENT;//设置成半透明的
  53.                 params.type = WindowManager.LayoutParams.TYPE_TOAST;
  54.                 params.setTitle("Toast");
  55.                 
  56.                 tv = new TextView(AddressService.this);
  57.                 tv.setText("归属地: " + address);
  58.                 windowManager.addView(tv, params);
  59.         }
  60.         
  61.         //========================================================================
  62.         
  63.         private class MyPhoneListener extends PhoneStateListener
  64.         {
  65.                 @Override
  66.                 public void onCallStateChanged(int state, String incomingNumber)
  67.                 {
  68.                         super.onCallStateChanged(state, incomingNumber);
  69.                         
  70.                         switch(state)
  71.                         {
  72.                                 case TelephonyManager.CALL_STATE_IDLE : //空闲状态
  73.                                         if(tv != null)
  74.                                         {
  75.                                                 windowManager.removeView(tv);//移除显示归属地的那个view
  76.                                                 tv = null;
  77.                                         }
  78.                                         break;
  79.                                         
  80.                                 case TelephonyManager.CALL_STATE_OFFHOOK : //接通电话
  81.                                         if(tv != null)
  82.                                         {
  83.                                                 windowManager.removeView(tv);//移除显示归属地的那个view
  84.                                                 tv = null;
  85.                                         }
  86.                                         break;
  87.                                         
  88.                                 case TelephonyManager.CALL_STATE_RINGING : //铃响状态
  89.                                         String address = NumberAddressService.getAddress(incomingNumber);
  90.                                         showLocation(address);
  91.                                         break;
  92.                                         
  93.                                 default : 
  94.                                         break;
  95.                         }
  96.                 }
  97.         }

  98. }
复制代码
就这样,我们的app就会在有电话进来的时候,把电话的归属地显示出来的啦但是记得在测试的时候,记得把我们上一次写的那个开启服务的CheckBox勾上,不然就不会显示出来的啦 好啦,今天的代码比较简单,就到这里,下一次,我们就美化一下这个显示框,加入风格的选择  Security_14接电话时显示电话归属地.rar (1.46 MB, 下载次数: 143)
目录
相关文章
|
Android开发
《手机卫士性能优化方案-Android篇》电子版地址
手机卫士性能优化方案-Android篇
77 0
《手机卫士性能优化方案-Android篇》电子版地址
|
Java
JAVA判断号码是手机还是固话并查询归属地
JAVA判断号码是手机还是固话并查询归属地
774 0
|
安全
金山手机卫士正式版发布 永久免费
近日,金山安全软件有限公司首次公开发布金山手机卫士正式版,并宣布下载,安装,升级金山手机卫士完全免费,手机卫士是金山安全软件公司今年成立后回馈用户的又一力作。目前支持主流的智能手机操作系统——塞班S60和Android。
990 0
|
存储 数据库 关系型数据库
|
XML API Android开发
Android--手机卫士涉及的知识点总结(一)
Splash界面 splash: 溅,洒 展现产品的logo提升产品的知名度 初始化操作(创建数据库,读取配置文件) 连接服务器检查软件授权 连接服务器检查软件的更新 自动更新的前提 包名...
1123 0
|
算法 数据库 Android开发
Android--手机卫士涉及的知识点总结(二)
短信拦截:开启服务并在里面注册一个广播接收者 ? 1 2 3 开启服务: Intent intent=new Intent(SettingActivity.
903 0
|
数据库 Android开发 数据安全/隐私保护
Android--手机卫士涉及的知识点总结(五)
主活动中点击切换 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
871 0
|
缓存 安全 数据库
Android--手机卫士涉及的知识点总结(六)
内容观察者 数据库中大声发个消息 ? 1 2 Uri uri=Uri.
1433 0

热门文章

最新文章