1.Android进阶:操作设备管理器

来源:互联网 发布:java构造set get方法 编辑:程序博客网 时间:2024/05/29 18:34
设备管理器操作步骤

1.创建类DeviceAdminReceiver的子类
public class AdminReceiver extends DeviceAdminReceiver {}

2.在清单文件中配置广播接收者
 <receiver    android:name="com.itbaihai.mobilesafe.receiver.AdminReceiver"    android:description="@string/sample_device_admin_description"    android:label="@string/sample_device_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>

3.配置字符串相关信息

<string name="sample_device_admin_description">超级管理员,可以远程锁屏,擦除数据</string><string name="sample_device_admin">超级管理员</string>


4.在res目录下创建xml文件夹,在该文件夹下创建device_admin_sample.xml文件,内容:

<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>

5.在res目录下创建raw文件夹,在该文件夹下放入需要播放的音乐资源


6.在代码中创建设备管理器和组件,实现功能

public class LostFindService extends Service {private SmsReceiver receiver;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}/** * @author Administrator * 短信的广播接收者 */private class SmsReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub//实现短信拦截功能Bundle extras = intent.getExtras(); Object datas[] = (Object[]) extras.get("pdus");for (Object data:datas){//得到电话号码String originatingAddress = sms.getOriginatingAddress();//得到短信内容String messageBody = sms.getMessageBody();System.out.println("号码:" + originatingAddress + ";内容:" + messageBody);if ("#*location*#".equals(messageBody)) {System.out.println("手机定位");// 启动位置监听的服务context.startService(new Intent(context, LocationService.class));abortBroadcast();// 中断短信传递} else if ("#*lockscreen*#".equals(messageBody)){// 设备策略管理器mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);// 初始化管理员组件mDeviceComponentName = new ComponentName(context, AdminReceiver.class);// 要执行超级管理员功能, 必须激活管理员权限:设置->安全->设备管理器if (mDPM.isAdminActive(mDeviceComponentName)) {// 判断当前是否已经激活mDPM.lockNow();// 立即锁屏mDPM.resetPassword("123456", 0);// 重新设置密码, 传""取消密码} else {Toast.makeText(context, "您还没有激活超级管理员权限!", Toast.LENGTH_SHORT).show();}abortBroadcast();//终止广播} else if ("#*wipedata*#".equals(messageBody)) {//远程清除数据// 设备策略管理器DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);// 初始化管理员组件ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);// 判断当前是否已经激活if (mDPM.isAdminActive(mDeviceComponentName)) {// WIPE_EXTERNAL_STORAGE表示清除手机内存和sdcard,// 0表示只清除手机内存(恢复出厂设置)mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);</span>// 0表示只清除手机内存Toast.makeText(context, "数据清除完成!", Toast.LENGTH_SHORT).show();} else {Toast.makeText(context, "您还没有激活超级管理员权限!", Toast.LENGTH_SHORT).show();}abortBroadcast();//终止广播}  if ("#*alarm*#".equals(messageBody)) {// 播放报警音乐System.out.println("播放报警音乐");// asset , raw(可以通过id引入)// 播放媒体音乐的音量和手机铃声音量无关MediaPlayer player = MediaPlayer.create(context, R.raw.ylzs);// 音量最大, 基于系统音量的比值player.setVolume(1f, 1f);player.setLooping(true);// 单曲循环player.start();// 开始播放// 4.4+版本上,无法拦截短信, 调此方法没有, 比如当前应用时默认短信应用才可以// 操作短信数据库, 删除数据库相关短信内容, 间接达到删除短信目的abortBroadcast();// 中断短信传递}}}@Overridepublic void onCreate() {//短信广播接收者receiver = new SmsReceiver();IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");filter.setPriority(Integer.MAX_VALUE);//级别一样,清单文件,谁先注册谁先执行,如果级别一样,代码比清单要高//注册短信监听registerReceiver(receiver, filter );super.onCreate();}@Overridepublic void onDestroy() {// TODO Auto-generated method stub//取消注册短信的监听广播unregisterReceiver(receiver);super.onDestroy();}}



GPS位置变换类
public class LocationService extends Service {private LocationManager mLM;private MyListener mListener;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();mLM = (LocationManager) getSystemService(LOCATION_SERVICE);// 初始化标准Criteria criteria = new Criteria();// 设置精度标准criteria.setAccuracy(Criteria.ACCURACY_FINE);// 允许花费流量criteria.setCostAllowed(true);// 获取当前最合适的位置提供者,(那个信号号就用哪个,3G,GPS等)// 参1:标准,参2:是否可用String bestProvider = mLM.getBestProvider(criteria, true);System.out.println("best provider:" + bestProvider);mListener = new MyListener();// 请求位置更新, 参1:位置提供者,参2:最短更新时间(经过多少时间请求定位一次),//参3:最短更新距离(离开上一次范围多大请求定位一次);参4:位置监听;// 参2参3改为0,表示只要位置变化,就马上更新mLM.requestLocationUpdates(bestProvider, 0, 0, mListener);}class MyListener implements LocationListener {// 位置发生变化@Overridepublic void onLocationChanged(Location location) {//得到最新更新的位置String j = "j:" + location.getLongitude();String w = "w:" + location.getLatitude();String accuracy = "accuracy:" + location.getAccuracy();String result = j + "\n" + w + "\n" + accuracy;// 发送经纬度给安全号码String phone = PrefUtils.getString("safe_phone", "",getApplicationContext());SmsManager sm = SmsManager.getDefault();sm.sendTextMessage(phone, null, result, null, null);//发送一次短信服务就停止stopSelf();// 服务自杀的方法}// 状态发生变化(信号的变化)@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {System.out.println("onStatusChanged");}// 用户打开GPS@Overridepublic void onProviderEnabled(String provider) {System.out.println("onProviderEnabled");}// 用户关闭GPS@Overridepublic void onProviderDisabled(String provider) {System.out.println("onProviderDisabled");}}@Overridepublic void onDestroy() {super.onDestroy();// 停止位置监听mLM.removeUpdates(mListener);mListener = null;}}

7.在清单文件里配置需要的权限

<strong>   </strong> <!-- 开机广播权限 -->    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>    <!-- 发送短信权限 -->    <uses-permission android:name="android.permission.SEND_SMS"/>    <!-- 读取联系人权限 -->    <uses-permission android:name="android.permission.READ_CONTACTS"/>    <!-- 接收短信权限 -->    <uses-permission android:name="android.permission.RECEIVE_SMS"/>    <!-- 网络定位权限 -->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- GPS定位权限 -->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><!-- 模拟器定位权限 -->    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

8.类的配置清单文件

<!-- 发送短信播放音乐广播注册 --><receiver android:name="com.itbaihai.mobilesafe.receiver.SmsReceiver" ><!-- 最大优先级 --><intent-filter android:priority="2147483647" ><action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver><!-- 手机定位服务注册 --><service android:name="com.itbaihai.mobilesafe.service.LocationService" ></service><service android:name="com.itbaihai.mobilesafe.service.LostFindService"></service>



0 0
原创粉丝点击