浅析Android手机卫士sim卡绑定
读取sim卡的序列号,保存起来,一旦sim发生变更了,认为是小偷的sim卡,发出警告
读取sim卡序列号
获取TelephonyManager对象,通过getSystemService(TELEPHONY_SERVICE)
调用TelephonyManager对象的getSimSerialNumber()方法,得到String类型的序列号
把序列号保存在SharedPreences里面
需要加权限android.permission.READ_PHONE_STATE
检测sim卡是否变更
使用广播接收者,监听手机的开机广播
新建一个包xxx.receiver,新建一个类BootCompleteReceiver.java
清单文件注册一下,添加<receiver>节点,设置名称android:name=”xxx”
添加意图过滤器<intent-filter>节点
添加动作<action/>节点,设置监听动作名称android.intent.action.BOOT_COMPLETED
在BootCompleteReceiver类里面的onReceive()方法里,接收到广播,读取当前的sim卡序列号,比较之前保存的sim卡序列号,如果不一样就发送短信给安全号码
监听开机启动需要权限android:perission.RECEIVE_BOOT_COMPLETED
BootCompleteReceiver.java
packagecom.qingguow.mobilesafe.receiver; importandroid.content.BroadcastReceiver; importandroid.content.Context; importandroid.content.Intent; importandroid.content.SharedPreferences; importandroid.telephony.TelephonyManager; importandroid.widget.Toast; publicclassBootCompleteReceiverextendsBroadcastReceiver{ privateTelephonyManagertm; privateSharedPreferencessp; @Override publicvoidonReceive(Contextcotext,Intentarg1){ sp=cotext.getSharedPreferences("config",Context.MODE_PRIVATE); //读取当前的sim卡序列号 tm=(TelephonyManager)cotext.getSystemService(Context.TELEPHONY_SERVICE); StringrelSim=tm.getSimSerialNumber(); //读取之前保存的 StringsaveSim=sp.getString("sim",""); //判断后发短信 if(saveSim.equals(relSim)){ }else{ //发送报警短息给安全号码 System.out.println("sim卡变更了"); Toast.makeText(cotext,"sim卡变更了",1).show(); } } }
SecGuide2Activity.java
packagecom.qingguow.mobilesafe; importandroid.content.Intent; importandroid.content.SharedPreferences; importandroid.content.SharedPreferences.Editor; importandroid.os.Bundle; importandroid.telephony.TelephonyManager; importandroid.text.TextUtils; importandroid.view.View; importandroid.view.View.OnClickListener; importcom.qingguow.mobilesafe.ui.SettingItemView; publicclassSecGuide2ActivityextendsBaseSecGuideActivity{ privateSettingItemViewsiv_sim; privateSharedPreferencessp; privateTelephonyManagertelephonyManager; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_lost_find2); siv_sim=(SettingItemView)findViewById(R.id.siv_sim); sp=getSharedPreferences("config",MODE_PRIVATE); telephonyManager=(TelephonyManager)getSystemService(TELEPHONY_SERVICE); //根据保存的数据设置状态 Stringsim=sp.getString("sim",""); if(TextUtils.isEmpty(sim)){ siv_sim.setChecked(false); }else{ siv_sim.setChecked(true); } //绑定sim卡 siv_sim.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ Stringsim=telephonyManager.getSimSerialNumber(); Editoreditor=sp.edit(); StringsimSp=sp.getString("sim",""); if(TextUtils.isEmpty(simSp)){ siv_sim.setChecked(true); editor.putString("sim",sim); }else{ siv_sim.setChecked(false); editor.putString("sim",""); } editor.commit(); } }); } publicvoidnextStep(Viewv){ showNext(); } publicvoidpreStep(Viewv){ showPre(); } @Override publicvoidshowNext(){ Intentintent=newIntent(this,SecGuide3Activity.class); startActivity(intent); finish(); } @Override publicvoidshowPre(){ Intentintent=newIntent(this,SecGuide1Activity.class); startActivity(intent); finish(); } }