使用短信去控制手机的某些功能
来源:互联网 发布:js prompt不弹出窗口 编辑:程序博客网 时间:2024/04/29 21:40
讲解一下如何使用广播通过获取短信的内容去控制手机的锁屏,和恢复出厂设置等功能。
下面进行代码讲解:
1.首先需要开启手机的超级管理员权限
package ccw.mory.phoneantitheft;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity { private Button btn1 ,btn2 ; private DevicePolicyManager devicePolicyManager ; private ComponentName componentName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.button) ; btn2 = (Button) findViewById(R.id.button2) ; devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); componentName = new ComponentName(this,Admin.class) ; btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "激活超级管理员中"); startActivity(intent); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(devicePolicyManager.isAdminActive(componentName)){ devicePolicyManager.removeActiveAdmin(componentName); } } }); }}
2.创建一个类去继承 BroadcastReceiver
package ccw.mory.phoneantitheft.brocast;import android.app.admin.DevicePolicyManager;import android.content.BroadcastReceiver;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.media.MediaPlayer;import android.net.Uri;import android.telephony.SmsMessage;import ccw.mory.phoneantitheft.Admin;/** * Created by Mory on 2016/7/15. * 通过短信可以对手机进行处理 */public class SmsReceiver extends BroadcastReceiver { private DevicePolicyManager devicePolicyManager ; private ComponentName componentName ; @Override public void onReceive(Context context, Intent intent) { devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE) ; componentName = new ComponentName(context, Admin.class) ; Object[] objects = (Object[]) intent.getExtras().get("pdus"); String format = intent.getStringExtra("format") ; for (Object obj : objects){ SmsMessage sms = SmsMessage.createFromPdu((byte[]) obj,format) ; String smsBody = sms.getMessageBody() ; //拿到短信内容 String sender = sms.getOriginatingAddress() ; //拿到短信发送者 if(smsBody.contains("#*SOS*#")){ //如果短信内容中包好#*SOS*# 直接播放报警音乐 MediaPlayer mp = MediaPlayer.create(context, Uri.parse("")) ; //没有音乐可以播放 mp.start(); }else if(smsBody.contains("#*reset*#")){ //如果短信内容中包含#*reset*# 直接将手机重置为出厂设置 if(devicePolicyManager.isAdminActive(componentName)){ devicePolicyManager.wipeData(0); } }else if(smsBody.contains("#*lock*#")){ //如果短信内容中包含#*lock*# 直接将手机锁屏 if(devicePolicyManager.isAdminActive(componentName)){ devicePolicyManager.lockNow(); } } } }}
3.在创建一个Admin类去继承DeviceAdminReceiver,类中不要做任何操作。package ccw.mory.phoneantitheft;import android.app.admin.DeviceAdminReceiver;/** * Created by Mory on 2016/7/15. */public class Admin extends DeviceAdminReceiver {}
4.在清单文件中不要忘记去注册广播
<receiver android:name=".brocast.SmsReceiver"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter></receiver><receiver android:name=".Admin" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_sample" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter></receiver>
5.在res资源文件下创建一个xml文件夹,创建名为device_admin_sample.xml的文件,内容如下
<?xml version="1.0" encoding="utf-8"?><device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> <expire-password /> <encrypted-storage /> <disable-camera /> </uses-policies></device-admin>
6.不要忘记了申请短信的权限
<uses-permission android:name="android.permission.READ_SMS"/><uses-permission android:name="android.permission.RECEIVE_SMS"/>
0 0
- 使用短信去控制手机的某些功能
- 使用中国网建实现Java向手机发送短信的功能
- 手机上使用MARSIOT去远程控制树莓派的简单教程
- android 监听短信数据库,制作短信控制工具,控制别人的手机!!(一)
- 手机垃圾短信功能设想
- 手机网站电话咨询、短信咨询等功能的实现
- html5开发手机打电话发短信功能,html5的高级开发,html5开发大全,html手机电话短信功能详解
- html5开发手机打电话发短信功能,html5的高级开发,html5开发大全,html手机电话短信功能详解
- ContentObserver去实现拒收短信或短信黑名单等功能
- Android实现短信验证功能(功能的使用)
- 手机的使用与短信的利用度
- ios手机功能:电话 短信 通讯录 总结
- 开发日记——手机安全卫士 Day05 2016-7-24 实现短信远程控制报警、定位功能
- 关于小米手机使用广播无法接受短信的问题
- 使用 twilio + python 给你的手机发短信
- 使用python发短信给自己的手机
- 使用Vibrator控制手机的振动
- 摇一摇手机控制手机录音功能
- 【机器学习】聚类算法:ISODATA算法
- 如何解决mysql读写效率
- Maven使用本地jar Install
- V6+2C6678 时钟调试
- Apache CXF实战之一 Hello World Web Service
- 使用短信去控制手机的某些功能
- Android Telephony分析(五) ---- TelephonyRegistry详解
- java集合提高
- Android adb unauthorized 问题
- Mysql使用Percona XtraBackup进行完整恢复
- DELL安装WIN7+ubuntu16.04双系统过程中的一些问题记录
- pyspider 爬虫 快速入门 |框架安装配置
- iOS UIDatePicker 的 用法
- Mysql 异常处理--condition和handler