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 ...
随机推荐
- VS2013中的MVC5模板部署到mono上的艰辛历程
部署环境:CentOS7 + Mono 3.10 + Jexus 5.6 在Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题:但在VS2013中创建的asp.n ...
- 【Java并发编程实战】----- AQS(二):获取锁、释放锁
上篇博客稍微介绍了一下AQS,下面我们来关注下AQS的所获取和锁释放. AQS锁获取 AQS包含如下几个方法: acquire(int arg):以独占模式获取对象,忽略中断. acquireInte ...
- HTML (超文本标记语言)
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body> ...
- 如何选择靠谱的app外包公司,2017最新资讯
企业在外包开发app之前最纠结的问题就是如何选择一个靠谱的app外包公司.因为一个靠谱的app外包公司非常重要,完全决定了app外包开发的周期.bug.售后服务等各方面问题,可以说app开发外包团队一 ...
- 你所不知道的setTimeout
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...
- ★Kali信息收集~3.子域名系列
★3.1Netcraft :子域名查询 官网:http://searchdns.netcraft.com/ 输入要查询的域名,即可得知子域名 3.2Fierce :子域名查询 概述: fierce ...
- 编写Windows服务疑问2:探索服务与安装器的关系
首先,来弄两个服务,一个叫“飞机”,一个叫“火车”. public class FeiJiService : ServiceBase { public FeiJiService() { Service ...
- 如何处理CSS3属性前缀
今天闲来无聊,重新来说说CSS3前缀的问题.在春节前和@一丝姐姐说起Sass中有关于gradient的mixins.姐姐说: 为什么还要用mixin呢?为什么不使用Autoprefixer?使用Aut ...
- JavaScript动画-模拟拖拽
模拟拖拽的原理: x1等于div.offsetLeft y1等于div.offsetTop x2等于ev.clientX(ev表示event事件) y2等于ev.clientY 当我们在方块上按下鼠标 ...
- Log4net入门(ASP.NET MVC 5篇)
在前4篇Log4net入门文章中,我们讲述了log4net的一些简单用法,在这一篇中我们主要讲述如何在ASP.NET MVC 5项目中将日志信息写入SQL Server数据库中. 一.创建最简单的AS ...