手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Android 手机防盗软件+源代码

时间:2024-11-04 06:55:06

1、AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.liu.activity" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".BootCompleteReceiver"> <intent-filter> <!-- 广播接受者对开机进行监听 --> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="8" /><!-- SharedPreferences权限 --><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 --> <uses-permission android:name="android.permission.SEND_SMS"/><!-- 发送短信权限 --></manifest>

2、BootCompleteReceiver.java:package com.liu.activity;import java.util.List;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.telephony.SmsManager;import android.telephony.TelephonyManager;/*** 广播接受者注册服务、在手机开机时,判断手机以前的IMIS码跟现在手机IMIS是否相等,如果不相等证明SIM已经被更换,则发送短信提示***/public class BootCompleteReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //获取 SharedPreferences sp =context.getSharedPreferences("data", Context.MODE_WORLD_WRITEABLE); //获取手机服务信息 TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); boolean isStart = sp.getBoolean("start", false);//判断是否开始监听 if(!isStart){ return; }else{ //获取IMIS标识 String saveSubscriberId = sp.getString("subScriberId", ""); //电话号码 String safenumber = sp.getString("safenumber", ""); //当前IMIS标示 String subscriberId = tm.getSubscriberId(); //获取短信管理器 SmsManager manager = SmsManager.getDefault(); //把短信放到List,如果超过70汉字会分割多条短信 List<String> message = manager.divideMessage("手机IMIS码:"+saveSubscriberId+"的手机,SIM已被更换,更换的IMIS码为:"+subscriberId); for(String msg:message){ manager.sendTextMessage(safenumber, null, msg, null, null); } if(subscriberId.trim().equals(saveSubscriberId)){ return ; }else{ /* //获取短信管理器 SmsManager manager = SmsManager.getDefault(); //把短信放到List,如果超过70汉字会分割多条短信 List<String> message = manager.divideMessage("手机IMIS码:"+saveSubscriberId+"的手机,SIM已被更换,更换的IMIS码为:"+subscriberId); for(String msg:message){ manager.sendTextMessage(safenumber, null, msg, null, null); }*/ } } }}

3、MainActivity :import android.app.Activity;import android.app.AlertDialog;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.telephony.TelephonyManager;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;/** 获取SharedPreferences* Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND* Activity.MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,* Activity.MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;* //如果希望文件被其他应用读和写,可以传入:Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE* Activity.MODE_APPEND//该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件*/public class MainActivity extends Activity { // 设置帐号密码对话框 private AlertDialog setPasswordDialog; // 保存参数 private SharedPreferences sp; // 用户登录对话框 private AlertDialog showDialog; // 电话号码文本框 private EditText etsafenumber; // 按钮 private Button butstart; private Button butmodify; // 标识 private boolean isFirst; private boolean isStart; // 手机基本服务 private TelephonyManager tm; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得手机基本服务 tm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE); //获取SharedPreferences sp = this.getSharedPreferences("data", MODE_WORLD_READABLE); // 判断是否是第一次登录 isFirst = sp.getBoolean("first", true); if (isFirst) { showPasswordDialog(); } else { showLogin(); } } /** * 用户登录 */ public void showLogin() { // new Builder实例 AlertDialog.Builder builder = new AlertDialog.Builder(this); // 加载到对话框 LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.showpassworddialog, null); // 渲染view final EditText etusername = (EditText) view.findViewById(R.id.username);// 获取用户名 final EditText etpassword = (EditText) view.findViewById(R.id.password); // 获取密码 // 获取按钮 Button butok = (Button) view.findViewById(R.id.ok); Button butcancle = (Button) view.findViewById(R.id.cancle); // OK按钮 butok.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 用户名 String username = etusername.getText().toString(); // 密码 String password = etpassword.getText().toString(); if ("".equals(username.trim()) || "".equals(password.trim())) { Toast.makeText(MainActivity.this, "用户名或密码不能为空", 4).show(); return; } // 从配置文件里面获取信息 String saveusername = sp.getString("username", ""); String savepassword = sp.getString("password", ""); if (username.trim().equals(saveusername) && password.trim().equals(savepassword)) { // 初始化页面 init(); // 关闭对话框 showDialog.dismiss(); } else { Toast.makeText(MainActivity.this, "用户名或密码错误", 4).show(); return; } } }); // cancle按钮 butcancle.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 关闭应用 MainActivity.this.finish(); } }); builder.setView(view); builder.setTitle("用户登录"); // 创建对话框 showDialog = builder.create(); // 显示 showDialog.show(); } /** * 加载主界面 */ public void init() { setContentView(R.layout.main); // 获取电话号码 etsafenumber = (EditText) this.findViewById(R.id.safenumber); // 获取按钮 butstart = (Button) this.findViewById(R.id.start); butmodify = (Button) this.findViewById(R.id.modify); // 从配置文件取出值 String savenumber = sp.getString("safenumber", ""); etsafenumber.setText(savenumber); // 第一次进入 isStart = sp.getBoolean("start", false); if (isStart) { etsafenumber.setEnabled(false);// 设置不可以编辑 butmodify.setEnabled(false); butstart.setText("停止防盗"); } // 添加事件 butstart.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (isStart) { // 获取编辑器 Editor editor = sp.edit(); editor.putBoolean("start", false); etsafenumber.setEnabled(true);// 设置不可以编辑 butmodify.setEnabled(true); isStart = false; butstart.setText("开始防盗"); editor.commit(); } else { String phoneNumber = tm.getLine1Number();//获取本机手机号码 //IMIS唯一标识 String subScriberId = tm.getSubscriberId(); // 获取电话号码 String safenumber = etsafenumber.getText().toString(); if ("".equals(safenumber.trim())) { Toast.makeText(MainActivity.this,"安全电话号码不能为空,请重新设置", 4).show(); return; } else { // 获取编辑器 Editor editor = sp.edit(); editor.putString("safenumber", safenumber); editor.putBoolean("start", true); isStart = true; editor.putString("subScriberId", subScriberId); editor.commit(); butmodify.setEnabled(false); etsafenumber.setEnabled(false); butstart.setText("停止防盗"); } } } }); butmodify.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showPasswordDialog(); } }); } /** * 显示设置密码对话框 */ private void showPasswordDialog() { // new Builder实例 AlertDialog.Builder builder = new AlertDialog.Builder(this); // 加载到对话框 LayoutInflater inflater = LayoutInflater.from(this); // 渲染view View view = inflater.inflate(R.layout.showpassworddialog, null); // 获取用户名 final EditText etusername = (EditText) view.findViewById(R.id.username); // 获取密码 final EditText etpassword = (EditText) view.findViewById(R.id.password); // 获取按钮 Button butok = (Button) view.findViewById(R.id.ok); Button butcancle = (Button) view.findViewById(R.id.cancle); // OK按钮 butok.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 用户名 String username = etusername.getText().toString(); // 密码 String password = etpassword.getText().toString(); if ("".equals(username.trim()) || "".equals(password.trim())) { Toast.makeText(MainActivity.this, "用户名或密码不能为空", 4).show(); return; } Editor editor = sp.edit();// 获取编辑器、保留数据 editor.putString("username", username); editor.putString("password", password); editor.putBoolean("first", false);// 是否第一次进入 editor.commit(); setPasswordDialog.dismiss();// 关闭对话框 init(); } }); // cancle按钮 butcancle.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (isFirst) { // 关闭应用 MainActivity.this.finish(); } else { setPasswordDialog.dismiss(); } } }); builder.setView(view); builder.setTitle("设置密码"); // 创建对话框 setPasswordDialog = builder.create(); // 显示 setPasswordDialog.show(); }}

4、main.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><EditText android:id="@+id/safenumber" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入一个安全有效的手机号" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/start" android:text="开始防盗" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/modify" android:text="修改密码" android:layout_weight="1" /> </LinearLayout></LinearLayout>

5、showpassworddialog.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/username" android:hint="请输入用户名!" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true" android:id="@+id/password" android:hint="请输入密码!" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ok" android:text="OK" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cancle" android:text="CANCLE" android:layout_weight="1" /> </LinearLayout></LinearLayout>

© 手抄报圈