一、目标。

  使用TelephonyManager对象获取手机相关信息,用SharedPreferences对象保存配置信息。

二、代码实现。

  1、为“绑定SIM卡”按钮添加id(取名setup_wizard_bandingSimCard),用于在Activity(SetupWizard_ui_2.java)中绑定监听器。

  2、在按钮所在的Activity中,新建手机管理对象(TelephonyManager)和“绑定SIM卡”按钮对象(自定义的组件SettingItemView,取名setup_wizard_bandingSimCard),通过getSystemService(String name)实例化新建的手机管理对象(TelephonyManager),参数String name为TELEPHONY_SERVICE。通过按钮对象的findViewById方法找到布局文件中的按钮,并为其绑定点击事件监听器(setOnClickListener(OnClickListener l))。

  3、在新建的抽象方法类(SlideActivity.java)中,由于继承它的子类中均会使用SharedPreferences对象,所以在抽象方法类中直接新建protect类型的SharedPreferences对象(取名sp),并通过getSharedPreferences(String name, int mode)方法实例化,可参考主界面(HomeActivity.java)代码的实例化方法。

  4、在“绑定SIM卡”按钮所在的Activity中,通过SharedPreferences对象(sp)的getString(string)方法获取config中绑定SIM卡的参数(SimSerialNumber)值,通过if...else...语句先判断是否已经绑定SIM卡。若已绑定(即SimSerialNumber对应的值非空),则通过“绑定SIM卡”按钮(setup_wizard_bandingSimCard)的setChecked(boolean)方法设置为true。否则为false。

判断是否已经绑定SIM卡的方法代码:

1 String SIM = sp.getString("SimSerialNumber", null);
2         if (TextUtils.isEmpty(SIM)) {
3             setup_wizard_bandingSimCard.setChecked(false);
4         }else {
5             setup_wizard_bandingSimCard.setChecked(true);
6         }

View Code

  5、在绑定SIM卡”按钮的监听器中:

    ①.通过SharedPreferences对象的editor()方法获得编辑器对象(Editor);

    ②.在onclick()方法中,通过TelephonyManager对象的getSimSerialNumber()方法获得String类型的SIM卡序列号(20位),需要获得“读取手机状态”(READ_PHONE_STATE)权限。

    ③.通过if..else..语句判断“绑定SIM卡”按钮(setup_wizard_bandingSimCard)是否被选中(isChecked)。如果选中则点击时通过setChecked(boolean)方法设置其为未选中(false),同时通过编辑器对象(editor)的putString(String key, String value)方法设置config中的相关参数(SimSerialNumber)为空(null)。反之设置按钮为选中,config中相关参数(SimSerialNumber)为②中获得SIM卡序列号。

    ④.通过编辑器对象(editor)的commit()方法提交。

监听器代码:

 1 setup_wizard_bandingSimCard.setOnClickListener(new OnClickListener() {
 2
 3             Editor editor = sp.edit();
 4
 5             @Override
 6             public void onClick(View v) {
 7                 //读取并保存SIM卡序列号
 8                 String SimSerialNumber = telephonyManager.getSimSerialNumber();
 9                 if(setup_wizard_bandingSimCard.isChecked()){
10                     //
11                     setup_wizard_bandingSimCard.setChecked(false);
12                     editor.putString("SimSerialNumber", null);
13                 }else{
14                     setup_wizard_bandingSimCard.setChecked(true);
15                     editor.putString("SimSerialNumber", SimSerialNumber);
16                 }
17                 editor.commit();
18             }
19         });

View Code

  6、注意以上代码的先后顺序,如要先加载父类,才能使用SharedPreferences对象,要先找到控件才能进行相关操作!

转载于:https://www.cnblogs.com/Red-Shark/p/4262184.html

Android实例-手机安全卫士(二十四)-绑定SIM卡相关推荐

  1. Android开发笔记(二十四)res目录的结构与配置

    res目录结构 res是Android项目工程中存放各类的目录,主要包括布局.图形与配置等等.res的子目录主要有: anim : 存放动画的描述文件 drawable : 存放各类图形的描述文件,包 ...

  2. Android实例-手机安全卫士(三十五)-来电号码显示归属地

    一.目标 1.显示来电号码的归属地: 2.可在"设置中心"设置"是否启用来电号码归属地显示" 二.代码实现 (以服务的形式监听来电状态) 1.在项目服务包中新增 ...

  3. Android实例-手机安全卫士(四十一)-选择自定义Toast背景

    一.目标 通过对话框选择并保存自定义的Toast背景        二.代码实现 1.复制layout文件夹中的model_setting_item.xml文件,以其为模板进行修改(取名为model_ ...

  4. Android实例-手机安全卫士(三十六)-根据Service是否开启确定CheckBox选中状态

    一.目标 1.根据service是否在后台运行情况来确定CheckBox的选中状态: 2.解决"设置中心"的"开启来电号码显示归属地"功能在退出程序再进入时选中 ...

  5. 动画android,Android学习指南之二十四:Android动画的实现 上

    在Android系统中也能经常见到动画,那么如何实现动画效果呢?本文就来为大家介绍动画的实现方式. Android中动画的实现分两种方式,一种方式是补间动画Tween Animation,就是说你定义 ...

  6. Android图形之HWC(二十四)

    HWC概述 HWC(hwcomposer)是Android中进行窗口(Layer)合成和显示的HAL层模块,其实现是特定于设备的,而且通常由显示设备制造商 (OEM)完成,为SurfaceFlinge ...

  7. Android实例-手机安全卫士(一)-启动界面

    一.目标. 1.启动时全屏显示,并获得当前应用版本号: 2.美化字体:颜色和文字阴影: 3.添加一个ProgressBar以增加用户体验. 效果如图 二.编写过程. 1.布局.在布局文件中增加一个Te ...

  8. Android实例-手机安全卫士(十一)-自定义对话框点击事件处理

    一.目标 在弹出的自定义对话框中,当点击"确认"时,保存密码,关闭对话框:当点击"取消"时关闭对话框.同时,如果不输入密码或输入密码错误则弹出相应的提示. 二. ...

  9. 漫步数理统计二十四——伽玛、卡方与贝塔分布

    本篇博文我们讲介绍伽玛(Γ\Gamma),卡方(χ2\chi^2)与贝塔(β\beta)分布.在高等微积分中已经证明过,对于α>0\alpha>0,积分 ∫∞0yα−1e−ydy \int ...

最新文章

  1. 一个mongosee例子
  2. seaborn箱图(box plot)可视化、并且在箱图中使用三角形标注均值的位置(showmeans=True)
  3. linux 重定向类型 超级块 i节点
  4. PE格式详细讲解4 - 系统篇04|解密系列
  5. 面向对象程序设计案例
  6. day22 Pythonpython 本文json模块
  7. matlab遗传算法m文件,matlab上安装遗传算法工具箱
  8. 树莓派删除python2.7设置python3.5
  9. GARFIELD@11-10-2004
  10. Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)
  11. Asp.net页面事件引发后台程序处理原理【转】
  12. Spark记录-Scala记录(基础程序例子)
  13. Turtlebot2 环境配置
  14. 团队作业4——第一次项目冲刺(Alpha版本) Day1
  15. java中RIGHT的值_java循环遍历, reduce(),reduceRight()方法和Object,keys遍历对象的属性...
  16. Super超图,GIS软件
  17. Building Autoencoders in Keras
  18. JAVAWeb开发之Servlet-19.Filter
  19. matlab读取三级文件夹方式
  20. 功能安全-26262-理论到实践-基础知识-基于可靠性理论的的SIL与基于系统理论的STAMP

热门文章

  1. 设计模式--------外观模式
  2. IT的你,批量将pdf转图片,还要啥付费软件
  3. 机器翻译评价指标之BLEU详细计算过程
  4. Parallels Desktop 16 完美解决初始化网络失败,无法联网,无法连接USB
  5. 开咖啡厅经营学|迷你咖啡店开店策略,带你一一拆解
  6. SMETA验厂审核知识大解读
  7. UE4 断线重连的实现
  8. 大学解惑03 - 数组内包含多个name和count的对象元素,name去重,并且count累加
  9. BugKu 一枝独秀 [MISC]
  10. 根据NABCD原则,完成一项案例的项目需求分析并提出创新方法