淺析Android手機(jī)衛(wèi)士sim卡綁定
讀取sim卡的序列號(hào),保存起來(lái),一旦sim發(fā)生變更了,認(rèn)為是小偷的sim卡,發(fā)出警告
讀取sim卡序列號(hào)
獲取TelephonyManager對(duì)象,通過(guò)getSystemService(TELEPHONY_SERVICE)
調(diào)用TelephonyManager對(duì)象的getSimSerialNumber()方法,得到String類(lèi)型的序列號(hào)
把序列號(hào)保存在SharedPreences里面
需要加權(quán)限 android.permission.READ_PHONE_STATE
檢測(cè)sim卡是否變更
使用廣播接收者,監(jiān)聽(tīng)手機(jī)的開(kāi)機(jī)廣播
新建一個(gè)包 xxx.receiver,新建一個(gè)類(lèi)BootCompleteReceiver.java
清單文件注冊(cè)一下,添加<receiver>節(jié)點(diǎn),設(shè)置名稱(chēng)android:name=”xxx”
添加意圖過(guò)濾器<intent-filter>節(jié)點(diǎn)
添加動(dòng)作<action/>節(jié)點(diǎn),設(shè)置監(jiān)聽(tīng)動(dòng)作名稱(chēng)android.intent.action.BOOT_COMPLETED
在BootCompleteReceiver類(lèi)里面的onReceive()方法里,接收到廣播,讀取當(dāng)前的sim卡序列號(hào),比較之前保存的sim卡序列號(hào),如果不一樣就發(fā)送短信給安全號(hào)碼
監(jiān)聽(tīng)開(kāi)機(jī)啟動(dòng)需要權(quán)限 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);
//讀取當(dāng)前的sim卡序列號(hào)
tm=(TelephonyManager) cotext.getSystemService(Context.TELEPHONY_SERVICE);
String relSim=tm.getSimSerialNumber();
//讀取之前保存的
String saveSim=sp.getString("sim", "");
//判斷后發(fā)短信
if(saveSim.equals(relSim)){
}else{
//發(fā)送報(bào)警短息給安全號(hào)碼
System.out.println("sim卡變更了");
Toast.makeText(cotext, "sim卡變更了", 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);
// 根據(jù)保存的數(shù)據(jù)設(shè)置狀態(tài)
String sim = sp.getString("sim", "");
if (TextUtils.isEmpty(sim)) {
siv_sim.setChecked(false);
} else {
siv_sim.setChecked(true);
}
// 綁定sim卡
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();
}
}
- Android讀取用戶(hù)號(hào)碼,手機(jī)串號(hào),SIM卡序列號(hào)的實(shí)現(xiàn)代碼
- Android獲取手機(jī)通訊錄、sim卡聯(lián)系人及調(diào)用撥號(hào)界面方法
- android監(jiān)控sim卡有沒(méi)有服務(wù)示例(sim卡管理)
- Android獲取手機(jī)SIM卡運(yùn)營(yíng)商信息的方法
- Android 判斷SIM卡屬于哪個(gè)移動(dòng)運(yùn)營(yíng)商的實(shí)現(xiàn)代碼
- Android4.X中SIM卡信息初始化過(guò)程詳解
- Android 判斷SIM卡是中國(guó)移動(dòng)\中國(guó)聯(lián)通\中國(guó)電信(移動(dòng)運(yùn)營(yíng)商)
- Android4.X讀取SIM卡短信和聯(lián)系人相關(guān)類(lèi)實(shí)例分析
- Android 判斷SIM卡屬于哪個(gè)移動(dòng)運(yùn)營(yíng)商詳解及實(shí)例
- Android獲取雙卡雙待手機(jī)的SIM卡信息示例代碼
相關(guān)文章
如何在Android中實(shí)現(xiàn)左右滑動(dòng)的指引效果
本篇文章是對(duì)在Android中實(shí)現(xiàn)左右滑動(dòng)指引效果的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Android調(diào)用相機(jī)并將照片存儲(chǔ)到sd卡上實(shí)現(xiàn)方法
Android中實(shí)現(xiàn)拍照有兩種方法,一種是調(diào)用系統(tǒng)自帶的相機(jī),還有一種是自己用Camera類(lèi)和其他相關(guān)類(lèi)實(shí)現(xiàn)相機(jī)功能,這種方法定制度比較高,需要的朋友可以了解下2012-12-12
Android 文件夾顯示紅色嘆號(hào)的解決方法(必看)
下面小編就為大家?guī)?lái)一篇Android 文件夾顯示紅色嘆號(hào)的解決方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04
Android重寫(xiě)View并自定義屬性實(shí)例分析
這篇文章主要介紹了Android重寫(xiě)View并自定義屬性的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android基于重寫(xiě)View實(shí)現(xiàn)自定義屬性的相關(guān)布局與具體技巧,需要的朋友可以參考下2016-02-02
Android實(shí)現(xiàn)跳動(dòng)的小球加載動(dòng)畫(huà)效果
Android中有各式各樣的加載動(dòng)畫(huà),大家多多少少都見(jiàn)過(guò),比如用過(guò)美團(tuán)客戶(hù)端的用戶(hù)對(duì)美團(tuán)那個(gè)加載小人的動(dòng)畫(huà)印象很深刻,一個(gè)可愛(ài)的小人在那拼命的跑。這樣的動(dòng)畫(huà)實(shí)現(xiàn)其實(shí)還有很多,今天這里就來(lái)實(shí)現(xiàn)一個(gè)跳動(dòng)的小球效果。有需要的可以參考借鑒。2016-08-08
Android編程出現(xiàn)Button點(diǎn)擊事件無(wú)效的解決方法示例
這篇文章主要介紹了Android編程出現(xiàn)Button點(diǎn)擊事件無(wú)效的解決方法,結(jié)合實(shí)例形式分析了Android編程中出現(xiàn)Button點(diǎn)擊事件無(wú)效的原因及相關(guān)的解決方法,需要的朋友可以參考下2018-02-02
Android實(shí)現(xiàn)底部帶刻度的進(jìn)度條樣式
由于公司需要一個(gè)帶刻度的進(jìn)度條樣式,因?yàn)榭潭刃枰獎(jiǎng)討B(tài)去改變,所以換背景圖片的方案肯定是不行的,唯一的辦法就是自己繪制一個(gè)進(jìn)度條,下面小編給大家?guī)?lái)了Android實(shí)現(xiàn)底部帶刻度的進(jìn)度條樣式及實(shí)例代碼,需要的朋友參考下吧2019-10-10
Android內(nèi)存優(yōu)化操作方法梳理總結(jié)
這篇文章主要介紹了Android 內(nèi)存優(yōu)化知識(shí)點(diǎn)梳理總結(jié),Android 操作系統(tǒng)給每個(gè)進(jìn)程都會(huì)分配指定額度的內(nèi)存空間,App 使用內(nèi)存來(lái)進(jìn)行快速的文件訪(fǎng)問(wèn)交互,長(zhǎng)時(shí)間如此便需要優(yōu)化策略,文章分享優(yōu)化知識(shí)點(diǎn)總結(jié),需要的朋友可以參考一下2022-11-11
Android PopupMenu彈出菜單的實(shí)現(xiàn)
這篇文章主要介紹了 Android PopupMenu彈出菜單的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本文能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10

