首页 > 代码库 > 手机远程控制

手机远程控制

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      @Override14 15      public void onDisabled(Context context, Intent intent) {16 17               // TODO Auto-generated method stub18 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);//补018 19                                  } else20 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,第三个是要发送的信息,第四个是发送状态,第五个是发送后的,都可以置为null24 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();

 

手机远程控制