Android 手机卫士--绑定sim卡序列号
现在开始具体 处理每一个导航页面的逻辑,首先看第二个导航页

本文地址:http://www.cnblogs.com/wuyudong/p/5949775.html,转载请注明出处。
这里需要实现绑定sim卡序列号的功能,注意添加相应的权限:uses-permission android:name="android.permission.READ_PHONE_STATE"
private SettingItemView siv_sim_bound;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup2);
initUI();
}
private void initUI() {
siv_sim_bound = (SettingItemView)findViewById(R.id.siv_sim_bound);
//1.回显(读取已有的绑定状态,用作显示sp中是否存储了sim卡的序列号)
final String sim_number = SpUtil.getString(this, ConstantValue.SIM_NUMBER, "");
//2.判断是否序列卡号为""
if(TextUtils.isEmpty(sim_number)) {
siv_sim_bound.setCheck(false);
} else {
siv_sim_bound.setCheck(true);
}
siv_sim_bound.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//3.获取原有的方法
boolean isCheck = siv_sim_bound.isCheck();
//4.将原有状态取反
//5,状态设置给当前条目
siv_sim_bound.setCheck(!isCheck);
//6,存储(序列卡号)
//6.1获取sim卡序列号TelephoneManager
if(!isCheck) {
TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//6.2获取sim卡的序列卡号
String simSerialNumber = manager.getSimSerialNumber();
//6.3存储
SpUtil.putString(getApplicationContext(), ConstantValue.SIM_NUMBER, simSerialNumber);
} else {
//7,将存储序列卡号的节点,从sp中删除掉
SpUtil.remove(getApplicationContext(), ConstantValue.SIM_NUMBER);
}
}
});
}
在SpUtil中添加remove方法
/**
* 从sp 中移除指定节点
* @param context 上下文环境
* @param key 需要一处节点的名称
*/
public static void remove(Context context, String key) {
// (存储节点文件名称,读写方式)
if (sp == null) {
sp = context.getSharedPreferences("config", context.MODE_PRIVATE);
}
sp.edit().remove(key).commit();
}
运行项目,勾选checkbox后,查看data/data..../shared_prefs文件下的config.xml文件,内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="mobile_safe_psd">1107f203c8f0cd474aa3ab6a6e03c6cc</string>
<string name="sim_number">89014103211118510720</string>
</map>
说明绑定sim卡的功能已经实现
当checkbox没有被选定的时候,也即是sim卡没有被选定,这个时候点击“下一页”就会弹出吐司提醒,逻辑代码如下:
public void nextPage(View view) {
String serialNumber = SpUtil.getString(this, ConstantValue.SIM_NUMBER, "");
if(!TextUtils.isEmpty(serialNumber)) {
Intent intent = new Intent(getApplicationContext(), Setup3Activity.class);
startActivity(intent);
finish();
} else {
ToastUtil.show(this, "请绑定sim卡");
}
}
效果如下图:

Android 手机卫士--绑定sim卡序列号的更多相关文章
- [android] 手机卫士绑定sim卡
更新: 收不到启动广播,查看知乎,好像是说高版本的系统都禁止了 还可以通过adb发送开机广播 adb shell am broadcast -a android.intent.action.BOOT_ ...
- Android 手机卫士--导航界面2
本文地址:http://www.cnblogs.com/wuyudong/p/5947504.html,转载请注明出处. 在之前的文章中,实现了导航界面1布局编写与相关的逻辑代码,如下图所示: 点击“ ...
- 017 Android 获取手机SIM卡序列号和读取联系人
1.获取手机SIM卡序列号 //5.存储sim卡系列号 //5.1获取sim卡系列号 TelephonyManager manager = (TelephonyManager) getSystemSe ...
- Android 手机卫士--设置界面&功能列表界面跳转逻辑处理
在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...
- 双卡手机怎么指定SIM卡打电话
双卡手机如何指定SIM卡打电话 package com.example.dualsimtest; import android.app.Activity; import android.content ...
- Android 手机卫士--参照文档编写选择器
本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...
- Android 手机卫士--确认密码对话框编写
本文接着实现“确认密码”功能,也即是用户以前设置过密码,现在只需要输入确认密码 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,转载请注明出处. ...
- Android 手机卫士--签名文件说明&包名说明
在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务 ...
- Android 手机卫士--弹出对话框
在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...
随机推荐
- 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...
- 使用ENode框架前您需要了解的东西(初稿)
选择ENode意味着什么可能很多人还不太清楚.我简单整理了一下: 意味着你选择了:你需要做DDD领域建模.选择了事件驱动的架构.选择了CQRS架构.选择了最终一致性.选择了事件溯源.选择了分布式.这些 ...
- MyBatis4:动态SQL
什么是动态SQL MyBatis的一个强大特性之一通常是它的动态SQL能力.如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了空格或者在列表的最后的 ...
- Docker私有仓库搭建
# 环境 系统 Linux 3.10.0-123.9.3.el7.x86_64 CentOS 7.0.1406 (Core) Docker 1.12.0, build 8eab29e 1.获取镜像 私 ...
- javascript关于立即函数
以前的知识总是忘,遇到代码又看不懂.要再复习一下,顺便记录一下. 关于立即执行函数: 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名 ...
- ZooKeeper安装与配置
一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...
- OpenCASCADE Job - Shoe Doctor
鞋博士 鞋博士经过8年沉淀,在鞋类工业4.0全流程平台上积累了相当的技术实力,获投资商亲睐. 新的一年,在投资商协助下,将踏上新的征途,因此诚邀您加盟顶层技术合伙人. 如果您具备以下实力,我们期待您的 ...
- Function Set in OPEN CASCADE
Function Set in OPEN CASCADE eryar@163.com Abstract. The common math algorithms library provides a C ...
- C# 给Word文档添加内容控件
C# 给Word文档添加内容控件 在MS Word中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片.日期.列表或格式化的文本等),从而创建一个结构化的word ...
- Linux同平台数据库整体物理迁移
Linux同平台数据库整体物理迁移 需求:A机器不再使用,要将A机器的Oracle迁移到B机器. 之前写过类似需求的文章:http://www.cnblogs.com/jyzhao/p/3968504 ...