如咱们所想,手机防盗软件,怎么去判断SIM卡被换了呢?咱们又怎么去触发这个事件呢?其实也很简单,那个顺咱们手机的人,想要换SIM卡必须关机再开机 吧,好,咱们就能够利用这一特色,来触发咱们的手机防盗软件,那么咱们怎么知道android手机什么时候开机什么时候关机呢?其实吧,android手机什么时候关 机不知道,可是什么时候开机,我却有点清楚,这样咱们的防盗软件的思路就慢慢清晰了。其实android手机在开机的时候,会发送一条广播,告诉手机里面的应 用,我开机啦,这样咱们的防盗软件就能够经过BroadcastReceiver来接收这条广播。贴代码,有详尽的注释:java
- package com.yuxi.lostprevent;
- import java.util.List;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.telephony.TelephonyManager;
- import android.telephony.gsm.SmsManager;
- public class BootCompleteReceiver extends BroadcastReceiver{
- TelephonyManager tm;
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- SharedPreferences m_SharedPreferences = context.getSharedPreferences("data", context.MODE_WORLD_WRITEABLE); //获得SharedPreferences存储文件对象
- tm = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE); //获得TelephonyManager对象,用以获得SIM卡的IMSI码
- boolean issafe = m_SharedPreferences.getBoolean("safestate", false); //从 m_SharedPreferences获得issafe,用以判断是否开启了防盗软件
- /*判断有没有开启防盗,若是没有,则返回空*/
- if (!issafe) {
- return;
- }
- else {
- /*m_SharedPreferences文件对象中,取得相应的值*/
- String saveSubScribeerId = m_SharedPreferences.getString("subscriberrid", "");
- String safeNumber = m_SharedPreferences.getString("safenumber", "");
- String subScribeerId = tm.getSubscriberId(); //获得当前SIM卡的SMSI码
- /*SMSI码匹配,则返回空*/
- if (subScribeerId.trim().equals(saveSubScribeerId)) {
- return;
- }
- else {
- SmsManager manager = SmsManager.getDefault(); //获得SMsManager对象,用以给安全号码发送消息
- /*若是信息大量的,则用List存储*/
- List<String> message = manager.divideMessage("手机IMSI码为:"+saveSubScribeerId+"的手机,SIM已被更换,更换的SMSI码为:"+subScribeerId);
- for (String msg : message) {
- manager.sendTextMessage(safeNumber, null, msg, null, null); //向安全号码发送短信
- }
- }
- }
- }
- }
好了,这个小模块开发就到此了,其实还能够添加不少方面的,如发送短信的时候并发送手机所在的位置,或者咱们还能够添加一层防御,就是发送短信的同时,发送一封E-mail给本身的邮箱,这样达到双层保护。好了此次就到这里了,作为练手,你们能够试试。下次再贴个项目出来,和你们一块儿学习,有多是一个游戏,也有多是一个管理软件!嘿嘿 - - -好好努力,每天向上!android