浅析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();
}
}