Android 手机防盗软件+源代码

2025-11-24 05:02:41

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>

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢