手机远程控制

1、  设备管理器

手机远程控制最重要的是要外置应用拿到管理设备的权限,这些权限在设备管理器中进行注册,就是大家在我们Settings->安全->设备管理器中能看到的。

 

A、申明一个管理器权限要求列表:myadmin.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 
 3 <device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
 4 
 5 <!-- 
 6 
 7 限制密码类型
 8 
 9 查看登录方式
10 
11 重置密码
12 
13 强制锁屏
14 
15 清除数据
16 
17 更改密码
18 
19 加密设备
20 
21 关闭摄像头头
22 
23 -->
24 
25 <uses-policies>
26 
27 <limit-password />
28 
29 <watch-login />
30 
31 <reset-password />
32 
33 <force-lock />
34 
35 <wipe-data />
36 
37 <expire-password />
38 
39 <encrypted-storage />
40 
41 <disable-camera />
42 
43 </uses-policies>
44 
45 </device-admin>
46 
47  

 

  B、申明一个设备管理器的调用组件:MyAdminReceiver.java

 1 public class MyAdminReceiver extends DeviceAdminReceiver{
 2 
 3      @Override
 4 
 5      public void onEnabled(Context context, Intent intent) {
 6 
 7               // TODO Auto-generated method stub
 8 
 9               super.onEnabled(context, intent);
10 
11      }
12 
13      @Override
14 
15      public void onDisabled(Context context, Intent intent) {
16 
17               // TODO Auto-generated method stub
18 
19               super.onDisabled(context, intent);
20 
21      }
22 
23 }

 

 

C、在Manifest.xml中注册此组件,注明组件用的是哪一个权限申明表

 1 <receiver android:name="com.example.cleaner.MyAdminReceiver" >
 2 
 3       <meta-data
 4 
 5            android:name="android.app.device_admin"
 6 
 7            android:resource="@xml/myadmin" />
 8 
 9             <!-- 指定设备管理权限设置表 -->
10 
11       <intent-filter>
12 
13          <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
14 
15                 <!-- 拿到设备管理器开启的广播 -->
16 
17       </intent-filter>
18 
19  </receiver>

 

 

D、启动设备管理器组件注册请求,用来启动设备管理器的注册界面

 

 1 // 拿到一个设备管理器
 2 
 3 DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
 4 
 5 // new一个新的组件出来,用来启动注册管理器的界面
 6 
 7 ComponentName componentName = new ComponentName(
 8 
 9 MainActivity.this, MyAdminReceiver.class);
10 
11 Intent intent = new Intent(          DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
12 
13 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
14 
15 componentName);
16 
17 startActivity(intent);

 

 

2、  MD5加密模块
作为一款防盗应用,设置只有主人才能进入的密码是必须的,一般密码保存在数据库里,这样的话容易被拿出来查看,所以有必要对密码进行加密。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

 1        try {
 2 
 3 MessageDigest messageDigest = MessageDigest.getInstance("MD5"); //MD5加密模块
 4 
 5 byte[] bytes = messageDigest.digest(password.getBytes());//加密密码成字节码
 6 
 7                        StringBuffer sb = new StringBuffer();
 8 
 9                        String tmp;
10 
11                        for (int i = 0; i < bytes.length; i++) {
12 
13                                  tmp = Integer.toHexString(0xff & bytes[i]);//转换成十六进制
14 
15                                  if (tmp.length() == 1) {
16 
17                                           sb.append("0" + tmp);//补0
18 
19                                  } else
20 
21                                           sb.append(tmp);
22 
23                        }
24 
25                        return sb.toString();
26 
27               } catch (NoSuchAlgorithmException e) {
28 
29                        throw new RuntimeException("没有此加密算法" + e);
30 
31               }
32 
33  

 

3、  定位实现
A、SIM卡被置换给信任号码发短信,密发

 1  TelephonyManager telephonyManager = (TelephonyManager) context
 2 
 3      .getSystemService(Context.TELEPHONY_SERVICE);
 4 
 5 // 拿到telephoneymanager对象
 6 
 7 String currentSimString = telephonyManager.getLine1Number();
 8 
 9 // 获取当前SIM卡号码,需要Permission: READ_PHONE_STATE 
10 
11 String protectedSim = spPreferences.getString("simSerial", "");
12 
13 SmsManager smsManager = SmsManager.getDefault();
14 
15 // 拿到SMS管理器,用于发送短信需要的东西
16 
17 String number = spPreferences.getString("number", "");
18 
19 if (isProtected) {
20 
21               if (!currentSimString.equals(protectedSim)) {
22 
23               // 发送短信,有5个参数,第一个是要发送到的地址,第二个是发送人,可以设置为null,第三个是要发送的信息,第四个是发送状态,第五个是发送后的,都可以置为null
24 
25               smsManager.sendTextMessage(number, null, "您一个号码为: "
26 
27                        + protectedSim + " 的好友可能手机被盗,现在他的手机号为:"
28 
29                        + currentSimString + ",请及时通知该好友,谢谢!", null, null);
30 
31                        }
32 
33               }

  

4、 清除数据与锁屏

 1 DevicePolicyManager manager = (DevicePolicyManager) context
 2 
 3                                           .getSystemService(Context.DEVICE_POLICY_SERVICE);
 4 
 5 manager.wipeData(0);//清除数据
 6 
 7 manager.resetPassword(lockString[2], 0);
 8 
 9               // 进行锁屏
10 
11 manager.lockNow();

 

posted @ 2014-10-08 14:35  Simba.Chen  阅读(591)  评论(0编辑  收藏  举报