如我们所想,手机防盗软件,怎么去判断SIM卡被换了呢?我们又怎么去触发这个事件呢?其实也很简单,那个顺我们手机的人,想要换SIM卡必须关机再开机 吧,好,我们就可以利用这一特点,来触发我们的手机防盗软件,那么我们怎么知道android手机何时开机何时关机呢?其实吧,android手机何时关 机不知道,但是何时开机,我却有点清楚,这样我们的防盗软件的思路就慢慢清晰了。其实android手机在开机的时候,会发送一条广播,告诉手机里面的应 用,我开机啦,这样我们的防盗软件就可以通过BroadcastReceiver来接收这条广播。贴代码,有详尽的注释:

 

 
  
  1. package com.yuxi.lostprevent; 
  2.  
  3. import java.util.List; 
  4.  
  5. import android.content.BroadcastReceiver; 
  6. import android.content.Context; 
  7. import android.content.Intent; 
  8. import android.content.SharedPreferences; 
  9. import android.telephony.TelephonyManager; 
  10. import android.telephony.gsm.SmsManager; 
  11.  
  12. public class BootCompleteReceiver extends BroadcastReceiver{ 
  13.  
  14.     TelephonyManager tm; 
  15.     @Override 
  16.     public void onReceive(Context context, Intent intent) { 
  17.         // TODO Auto-generated method stub 
  18.          
  19.          
  20.         SharedPreferences m_SharedPreferences = context.getSharedPreferences("data", context.MODE_WORLD_WRITEABLE);     //得到SharedPreferences存储文件对象 
  21.          
  22.         tm = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);    //得到TelephonyManager对象,用以得到SIM卡的IMSI码 
  23.          
  24.         boolean issafe = m_SharedPreferences.getBoolean("safestate"false);    //从 m_SharedPreferences得到issafe,用以判断是否开启了防盗软件 
  25.          
  26.         /*判断有没有开启防盗,如果没有,则返回空*/ 
  27.         if (!issafe) {   
  28.             return
  29.         } 
  30.         else { 
  31.             /*m_SharedPreferences文件对象中,取得相应的值*/ 
  32.             String saveSubScribeerId = m_SharedPreferences.getString("subscriberrid"""); 
  33.             String safeNumber = m_SharedPreferences.getString("safenumber"""); 
  34.              
  35.             String subScribeerId = tm.getSubscriberId();    //得到当前SIM卡的SMSI码 
  36.              
  37.             /*SMSI码匹配,则返回空*/ 
  38.             if (subScribeerId.trim().equals(saveSubScribeerId)) {    
  39.                 return
  40.             } 
  41.             else { 
  42.                  
  43.                 SmsManager manager = SmsManager.getDefault();   //得到SMsManager对象,用以给安全号码发送消息 
  44.                  
  45.                 /*如果信息大量的,则用List存储*/ 
  46.                 List<String> message = manager.divideMessage("手机IMSI码为:"+saveSubScribeerId+"的手机,SIM已被更换,更换的SMSI码为:"+subScribeerId); 
  47.                  
  48.                 for (String msg : message) { 
  49.                     manager.sendTextMessage(safeNumber, null, msg, nullnull);     //向安全号码发送短信 
  50.                 } 
  51.             } 
  52.         } 
  53.     } 
  54.  

 

好了,这个小模块开发就到此了,其实还可以添加很多方面的,如发送短信的时候并发送手机所在的位置,或者我们还可以添加一层防护,就是发送短信的同时,发送一封E-mail给自己的邮箱,这样达到双层保护。好了这次就到这里了,做为练手,大家可以试试。下次再贴个项目出来,和大家一起学习,有可能是一个游戏,也有可能是一个管理软件!嘿嘿 - - -好好努力,天天向上!