Android实例-手机安全卫士(二十五)-检查手机SIM卡是否变更

一、目标

  1、利用广播接收者(手机重启时会发出相应广播)获取开机时的SIM序列号,与已经保存着的比较。根据比较结果完成相应操作。

  2、(可选)强制在防盗设置向导第二步中要求绑定SIM卡后才可进行下一步设置。

  3、实现从另一个Activity中获取数据,即点击”选择联系人“人后跳至新建的类(选择联系人)中,并从中获取联系人数据。

二、代码实现。

  1、在程序包下新建包(取名com.example.mobilesafe.receiver),用于接收广播。在新建包下新建类(取名BootCompleteReceiver.java)并继承广播接收者(BroadcastReceiver)。

  2、在配置文件(AndroidManifest.xml)中注册新建的广播接收类(取名BootCompleteReceiver.java)。<activity>标签下新建接收者<receiver>标签,名称(android:name)为新建广播接受类的全路径名称,<receiver>标签下新建意图过滤标签<intent-filter>,意图过滤标签<intent-filter>中新建动作标签<action>,动作标签<action>中需要关注的广播名称(android:name)为android.intent.action.BOOT_COMPLETED。

广播注册代码:

1 <receiver android:name="com.example.mobilesafe.receiver.BootCompleteReceiver" >
2             <intent-filter>
3                 <action android:name="android.intent.action.BOOT_COMPLETED" />
4             </intent-filter>
5         </receiver>

  3、在新建的广播接收类(BootCompleteReceiver.java)中,通过SharedPreferences对象获取已经保存的文件(config)中SIM的序列号(配置参数为SimSerialNumber),通过TelephonyManager对象获取当前SIM序列号,然后进行比较。根据比较结果进行相应操作。

 1 package com.example.mobilesafe.receiver;
 2
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.content.SharedPreferences;
 7 import android.telephony.TelephonyManager;
 8 import android.widget.Toast;
 9
10 public class BootCompleteReceiver extends BroadcastReceiver {
11
12     private SharedPreferences sp;
13     private TelephonyManager tm;
14
15     @Override
16     public void onReceive(Context context, Intent intent) {
17         sp = context.getSharedPreferences("config", context.MODE_PRIVATE);
18         tm = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
19         //获取已保存了的SIM卡序列号
20         String  savedSIM = sp.getString("SimSerialNumber", null);
21         //获取当前SIM卡序列号
22         String newSIM = tm.getSimSerialNumber();
23         if(newSIM.equals(savedSIM)){
24             //序列号相等
25
26         }else{
27             //序列号不相等
28         }
29     }
30 }

  4、(可选)强制要求绑定SIM卡。在向导第二步的Activity主代码的滑向下一步方法(slideNext() )中,同时sp获取getString获取配置文件(config)中SIM绑定情况的参数(SimSerialNumber)的值,如果返回空,则不可进入下一步。

代码如下:

 1 public void slideNext() {
 2
 3         String  sim  = sp.getString("SimSerialNumber", null);
 4         if(TextUtils.isEmpty(sim)){
 5             Toast.makeText(this, "SIM卡未绑定", 0).show();
 6             return;
 7         }
 8         Intent intent = new Intent (SetupWizard_ui_2.this,SetupWizard_ui_3.class);
 9         startActivity(intent);
10         finish();
11         overridePendingTransition(R.anim.tran_in, R.anim.tran_out);
12     }

  5、点击”选择联系人“按钮进入选择联系人Activity,并最后从该Activity中获取数据。

    ①.为选择联系人设置点击事件;②.在点击事件方法中通过Intent连接两个Activity(向导设置第三步、选择联系人);③.通过startActivityForResult(Intent intent, int requestCode)方法启动,参数中intent为连接两个Activity的意图,  int requestCode为返回的结果码,这里先设置为0.

点击事件方法

public void selectcontact(View view){
		Intent intent = new Intent(SetupWizard_ui_3.this,SelectContactActivity.class);
		startActivityForResult(intent, 0);
	}
时间: 2024-11-11 00:54:12

Android实例-手机安全卫士(二十五)-检查手机SIM卡是否变更的相关文章

【边做项目边学Android】手机安全卫士10-设置向导之绑定SIM卡

上回主要做了设置向导界面的界面设计,主要涉及到界面的布局和一些控件的使用.这次要做设置向导界面的功能具体实现. 首先,4个界面分别是(重复度很大,这里就不再贴到正文中了) /mobilesafe/res/layout/setup_wizard1.xml /mobilesafe/res/layout/setup_wizard2.xml /mobilesafe/res/layout/setup_wizard3.xml /mobilesafe/res/layout/setup_wizard4.xml

Android实例-手机安全卫士(十五)-由主界面进入手机防盗界面

一.目标 1.在主界面中通过“设置防盗密码”或者“输入防盗密码”后,对话框消失,并进入”手机防盗界面“. 2.进入是”手机防盗界面“时,根据有无完成”手机防盗设置向导“的情况进入不同的界面.若未完成,则进入向导界面,若已完成,则进入防盗界面.          二.代码实现. 1.在程序包(com.example.mobilesafe)下新建两个Activity(分别取名SecurityActivity和SetupWizard),并在配置文件(AndroidManifest.xml)中完成注册.

Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** 即:混淆规则. 自己没写过关于混淆打包的文章,在此补上. 下面了解Android studio环境下 项目混淆打包的操作. ------------------------------------------------------------

Android学习路线(二十五)全面理解Android Navigation逻辑

应用导航的一致性是整体用户体验的重要组成部分,如果app的导航方式不一样,用户不能很快理解,那么这个应用会让用户有很大的挫败感,大大地影响了用户体验. Android 3.0后,系统像大家介绍了其在全局导航表现上的重大改变.全面地理解“Back”以及“Up”的导航效果以及意义,能够大大地减少用户的学习时间,用户在使用过程中很快能够学习如何在应用的各个界面间的切换. Android 2.3以及它之前的系统都是通过“Back”按钮来为app导航的.在Android 3.0后出现的Actionbar则

Android实战技巧之二十五:模拟器如何重启?试试Genymotion!

需要测试Android 5.1系统重启后的一个功能,我手里的设备都没有这么高的版本,那么只好向模拟器求助了.就像大多网友一样,我遇到了一个大问题,如何将Android模拟器重启? 我有几个想法: * 长按模拟器的power kay,调出重启键.可惜的是系统默认只有poweroff一项. * adb reboot或者adb shell进入模拟器再执行reboot.尝试了几个模拟器,都没有成功,只听见我本子的cpu风扇在飞速的运转着. * 自己写一个重启的小应用做重启这件事.这是几年前我就想写的程序

Android学习笔记二十五之ListView多布局实现

Android学习笔记二十五之ListView多布局实现 这一节是介绍ListView这个控件的最后一节,实现一个Item的多布局.像我们经常在用的各种即时通讯工具,QQ.微信等,假设他们的会话界面是ListView实现的,那么ListView就有多种Item布局,这一节,我们就来实现一个ListView的多种Item. 要实现ListView里面有多种Item,就要重写适配器的两个方法getViewTypeCount()和getItemViewType(int position),第一个方法是

企业搜索引擎开发之连接器connector(二十五)

下面开始具体分析连接器是怎么与连接器实例交互的,这里主要是分析连接器怎么从连接器实例获取数据的(前面文章有涉及基于http协议与连接器的xml格式的交互,连接器对连接器实例的设置都是通过配置文件操作的,具体文件操作尚未详细分析(com.google.enterprise.connector.persist.FileStore类)) 本文以数据库连接器实例为例来分析,数据库类型连接器是通过调用mybatis(sqlmap框架)组件与数据库进行操作的,我们通过前端提交的数据库连接器实例表单信息最终存

Bootstrap &lt;基础二十五&gt;警告(Alerts)

警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个可选的关闭按钮.为了创建一个内联的可取消的警告框,请使用 警告(Alerts) jQuery 插件. 您可以通过创建一个 <div>,并向其添加一个 .alert class 和四个上下文 class(即 .alert-success..alert-info..alert-warning..ale

Java进阶(二十五)Java连接mysql数据库(底层实现)

Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜索.特将之前使用的方法做一简单的总结.也能够在底层理解一下连接数据库的具体步骤. 实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java-5.1.7-bin.jar. 下面来看一下我所使用的数据库连接方法类: MysqlUtil.java package cn.edu

CCNA实验二十五 实战多种ACL访问控制 &nbsp;

CCNA实验二十五 实战多种ACL访问控制 环境:Windows XP .Pracket Tracert 5.3 . GNS3.0.7.2 目的:了解ACL作用并熟练在不同环境中配置ACL 说明: ACL是路由器和交换机接口的指令列表,用来控制端口进出的数据包并且可以保护网络,ACL适用于所有的被路由协议,如IP.IPX.AppleTalk等.ACL种类:标准ACL.扩展ACL.命名式ACL.基于时间ACL.自反ACL.动态ACL. 标准的ACL使用 1 ~ 99 以及1300~1999之间的数