更新:

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

还可以通过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. Python设计模式运用

    1 面向对象 2 创建型模式 3 结构型模式 4 行为型模式

  2. 第37章:MongoDB-集群--Replica Sets(副本集)---单机的搭建

    ①创建副本集 1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建db1,db2,db3: 同理在前面的logs下面创建logs1,logs2,logs3 2:在启动MongoDB服务器的时候, ...

  3. Hdp安装问题杂解

    5.在安装的时候遇到的问题 5.1使用ambari-server start的时候出现ERROR: Exiting with exit code -1. 5.1.1REASON: Ambari Ser ...

  4. JavaScript基础视频教程总结(041-050章)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. WPF中TreeView的+-号和连线style的一种实现

    最近又开始跟WPF打交道,项目里面用到了TreeView这个控件.然后需要有一个连线的外观就像是这样 二话不说,百度了一下,找到一个实现, 通道. 把代码拷贝到项目里面,跑了一下,看上去还不错.但是这 ...

  6. Java集合框架之一:ArrayList源码分析

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! ArrayList底层维护的是一个动态数组,每个ArrayList实例都有一个容量.该容量是指用来存储列表元素的数组的大小.它总是至少等于 ...

  7. setlocale()函数详解——C语言

    setlocale函数 函数原型:char* setlocale (int category, const char* locale); setlocale位于头文件,setlocale() 函数既可 ...

  8. Git入门基础详情教程

    前言 写了一篇文章<一篇文章了解Github和Git教程>还觉得不错,继续写了<为了Github默默付出,我想了解你>,那么继续写Git 基础知识. Git 官网:https: ...

  9. Linux下安装mysql5.7

    Linux下安装mysql5.7   首先准备好mysql5.7.17的安装包,安装包放在  /data/software 目录下 进入到 /usr/local 目录下,解压mysql安装包 命令: ...

  10. HDU 6044--Limited Permutation(搜索+组合数+逆元)

    题目链接 Problem Description As to a permutation p1,p2,⋯,pn from 1 to n, it is uncomplicated for each 1≤ ...