Analysis of Android mobile phone guard sim card binding

  • 2021-07-01 08:13:36
  • OfStack

Read the serial number of sim card, save it, 1 denier sim changes, think it is a thief's sim card, issue a warning

Read the serial number of sim card

Gets the TelephonyManager object via getSystemService (TELEPHONY_SERVICE)

Call the getSimSerialNumber () method of the TelephonyManager object to get the sequence number of the String type

Save the serial number in SharedPreences

Require permission android.permission.READ_PHONE_STATE

Check whether the sim card is changed

Use the broadcast receiver to monitor the boot broadcast of the mobile phone

Create a new package xxx. receiver and a new class BootCompleteReceiver. java

Manifest file registration 1, add < receiver > Node, setting name android: name= "xxx"

Add intent filter < intent-filter > Node

Add action < action/ > Node, set the listening action name android.intent.action.BOOT_COMPLETED

In the onReceive () method in the BootCompleteReceiver class, receive the broadcast, read the current sim card serial number, compare the sim card serial number saved before, and send a short message to the security number if not

android: perission.RECEIVE_BOOT_COMPLETED

BootCompleteReceiver.java


package com.qingguow.mobilesafe.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class BootCompleteReceiver extends BroadcastReceiver {
private TelephonyManager tm;
private SharedPreferences sp;
@Override
public void onReceive(Context cotext, Intent arg1) {
sp=cotext.getSharedPreferences("config", Context.MODE_PRIVATE);
// Read the current sim Card serial number 
tm=(TelephonyManager) cotext.getSystemService(Context.TELEPHONY_SERVICE);
String relSim=tm.getSimSerialNumber();
// Read the previously saved 
String saveSim=sp.getString("sim", "");
// Send text message after judgment 
if(saveSim.equals(relSim)){
}else{
// Send an alarm message to the security number 
System.out.println("sim The card has changed ");
Toast.makeText(cotext, "sim The card has changed ", 1).show();
}
}
} 

SecGuide2Activity.java


package com.qingguow.mobilesafe;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import com.qingguow.mobilesafe.ui.SettingItemView;
public class SecGuide2Activity extends BaseSecGuideActivity {
private SettingItemView siv_sim;
private SharedPreferences sp;
private TelephonyManager telephonyManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
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);
//  Set the state according to the saved data 
String sim = sp.getString("sim", "");
if (TextUtils.isEmpty(sim)) {
siv_sim.setChecked(false);
} else {
siv_sim.setChecked(true);
}
//  Binding sim Card 
siv_sim.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String sim = telephonyManager.getSimSerialNumber();
Editor editor = sp.edit();
String simSp = 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();
}
});
}
public void nextStep(View v) {
showNext();
}
public void preStep(View v) {
showPre();
}
@Override
public void showNext() {
Intent intent = new Intent(this, SecGuide3Activity.class);
startActivity(intent);
finish();
}
@Override
public void showPre() {
Intent intent = new Intent(this, SecGuide1Activity.class);
startActivity(intent);
finish();
}
}

Related articles: