更新:

收不到启动广播,查看知乎,好像是说高版本的系统都禁止了

还可以通过adb发送开机广播

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

还没测试,回去再测试

==========================

读取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

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);
//读取当前的sim卡序列号
tm=(TelephonyManager) cotext.getSystemService(Context.TELEPHONY_SERVICE);
String relSim=tm.getSimSerialNumber();
//读取之前保存的
String saveSim=sp.getString("sim", "");
//判断后发短信
if(saveSim.equals(relSim)){ }else{
//发送报警短息给安全号码
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);
// 根据保存的数据设置状态
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] 手机卫士绑定sim卡的更多相关文章

  1. Android 手机卫士--绑定sim卡序列号

    现在开始具体 处理每一个导航页面的逻辑,首先看第二个导航页 本文地址:http://www.cnblogs.com/wuyudong/p/5949775.html,转载请注明出处. 这里需要实现绑定s ...

  2. Android 手机卫士--导航界面2

    本文地址:http://www.cnblogs.com/wuyudong/p/5947504.html,转载请注明出处. 在之前的文章中,实现了导航界面1布局编写与相关的逻辑代码,如下图所示: 点击“ ...

  3. Android 手机卫士--设置界面&功能列表界面跳转逻辑处理

    在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...

  4. 双卡手机怎么指定SIM卡打电话

    双卡手机如何指定SIM卡打电话 package com.example.dualsimtest; import android.app.Activity; import android.content ...

  5. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  6. Android 手机卫士--确认密码对话框编写

    本文接着实现“确认密码”功能,也即是用户以前设置过密码,现在只需要输入确认密码 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,转载请注明出处. ...

  7. Android 手机卫士--签名文件说明&包名说明

    在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务 ...

  8. Android 手机卫士--弹出对话框

    在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...

  9. android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码

    Android精选源码 android身份证.银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用, ...

随机推荐

  1. vue-学习系列之vue双向绑定原理

    一.访问器属性 访问器属性是对象中的一种特殊属性,它不能直接在对象中设置,而必须通过 defineProperty() 方法单独定义. var obj = { }; // 为obj定义一个名为 hel ...

  2. Codeforces Round #486 (Div. 3) A. Diverse Team

    Codeforces Round #486 (Div. 3) A. Diverse Team 题目连接: http://codeforces.com/contest/988/problem/A Des ...

  3. android 混淆基本知识

    官网介绍:https://www.guardsquare.com/en/proguard/manual/introduction android 开发文档:https://developer.andr ...

  4. stm32手册上的英文

    crystal-less 无晶振 USB  FS(Full-speed)此外还有High-speed接口(简称HS),Low-speed接口(简称LS) frequency频率 CRC(Cyclic ...

  5. 【pycharm 密钥】pycharm 2017 密钥

    server选项里边输入:  http://idea.liyang.io   亲测可用!!!

  6. Codeforces791 B. Bear and Friendship Condition

    B. Bear and Friendship Condition time limit per test 1 second memory limit per test 256 megabytes in ...

  7. delegate的Invoke和BeginInvoke方法

    C#中的控件和delegate委托方法都有Invoke和BeginInvoke方法,控件的这两个方法网上讲得很多, 这里就不多说了,下面讲一下delegate的Invoke和BeginInvoke方法 ...

  8. Ubuntu 安装 chrome浏览器

    按下 Ctrl + Alt + t 键盘组合键,启动终端. 输入以下命令: sudo wget http://www.linuxidc.com/files/repo/google-chrome.lis ...

  9. two sum --无脑法

    public class Solution { /* * @param numbers: An array of Integer * @param target: target = numbers[i ...

  10. 【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?

    目录 一.写在前面 二.技术广度的快速准备 三.技术深度的快速准备 四.基础功底的快速准备 五.下篇预告 一.写在前面 春节长假转眼已过,即将迎来的是一年一度的金三银四跳槽季. 假如你准备在金三银四跳 ...