打开gps定位-->发回短信&拦截指令&锁屏&销毁数据&ComponentName

来源:互联网 发布:vb表格控件 编辑:程序博客网 时间:2024/05/04 19:38

经纬度

地球上的坐标

定位原理

1.gps定位:基于 人造卫星

精度 准确

受建筑物影响 室内

2.基站定位(辅助)

精度没有gps准确

受基站数量

3.ip定位 静态ip

goolge定位框架

android.jar

<!-- 定位权限 -->

    <!-- FINE精度高 gps -->

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- COARSE粗糙 -->

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!-- 使用模拟 -->

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

① 创建定位服务LocationManager

② 创建条件Criteria

③ 创建监听器 LocationListener

借助地图  25.9667,118.5333   格式  纬度,经度

谷歌定位

中国 gcj02   火星坐标

国外wgs84  gps坐标 地球坐标

 

<span style="font-size:14px;">public class GpsUtils {private static LocationManager lm;/** * 打开定位 *  * @param context */public static void startLocation(Context context) {// ① 创建定位服务LocationManagerlm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);// ② 创建条件CriteriaList<String> pList = lm.getAllProviders();// Provider-->定位器for (String temp : pList) {Log.i("wzx", temp);MyLocationListener listener = new MyLocationListener(context);// requestLocationUpdates开始定位// lm.requestLocationUpdates(provider定位器, minTime 时间间隔, minDistance// 最小移动距离,监听器);lm.requestLocationUpdates(temp, 1000, 0, listener);}// 09-11 06:45:20.396: I/wzx(2921): passive// 09-11 06:45:20.396: I/wzx(2921): gpsCriteria c = new Criteria();// Criteria:查询条件// 查询最适配的定位方式。// 1.费用c.setCostAllowed(true);// 2.电量 耗电c.setPowerRequirement(Criteria.POWER_HIGH);// gps特别耗电// 3.精度 精确 gpsAccuracy度c.setAccuracy(Criteria.ACCURACY_FINE);String bestProvider = lm.getBestProvider(c, true);Log.i("wzx", "bestProvider=" + bestProvider);// ③ 创建监听器 LocationListener 比方 :ListView OnItemClickListener// 监听器通常帮助我们获取参数}public static class MyLocationListener implements LocationListener {private Context context;public MyLocationListener(Context context) {super();this.context = context;}// 监听获取位置变化// Location :封装经纬 度坐标的对象@Overridepublic void onLocationChanged(Location location) {// 移除lm.removeUpdates(this);Log.i("wzx", "longitude:" + location.getLongitude() + " latitude:" + location.getAltitude());   //短信发回手机PointDouble newPoint=OffsetUtils.getRightLocation(context, location.getLongitude(), location.getLatitude());Log.i("wzx", "new longitude:" +newPoint.x + " latitude:" + newPoint.y);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}}}</span>

1.1. 拦截指令

① 创建BroadCastReceiver

② Action是类型 

③ 权限  短信内容 涉隐私

④ 有序广播 要设置优先级priority

⑤ 解析byte[]-->SmsMessage

<span style="font-size:14px;">public class SmsReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub// ① 创建BroadCastReceiver// ② Action是类型// ③ 权限 短信内容 涉隐私// ④ 有序广播 要设置优先级priorityint max = Integer.MAX_VALUE;// ⑤ 解析byte[]-->SmsMessageLog.i("wzx", "onReceive----接收短信" + intent.getAction());// pdus 协议单元 kmObject[] objs = (Object[]) intent.getExtras().get("pdus");for (Object obj : objs) {byte[] smsBytes = (byte[]) obj;SmsMessage sm = SmsMessage.createFromPdu(smsBytes);String address = sm.getOriginatingAddress();// 获取发送号码String body = sm.getMessageBody();if ("$BJ$".equals(body.trim())) {Log.i("wzx", "$BJ$");abortBroadcast();//销毁广播} else if ("$GPS$".equals(body.trim())) {Log.i("wzx", "$GPS$");abortBroadcast();//销毁广播} else if ("$XH$".equals(body.trim())) {Log.i("wzx", "$XH$");abortBroadcast();//销毁广播} else if ("$SP$".equals(body.trim())) {Log.i("wzx", "$SP$");abortBroadcast();//销毁广播}}// 解析}}    <uses-permission android:name="android.permission.RECEIVE_SMS" />        <receiver android:name="com.itheima.mobilesafe.receiver.SmsReceiver">            <intent-filter android:priority="2147483647">                <action android:name="android.provider.Telephony.SMS_RECEIVED" />            </intent-filter>        </receiver></span>

1.2. 锁屏

<span style="font-size:14px;">public class DeviceUtils {/** * 锁屏 *  * @param context */public static void lockScreen(Context context) {// DevicePolicyManagerDevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);// dpm重置 密码dpm.resetPassword("123", 0);//调用锁屏dpm.lockNow();}</span>

1.3. 销毁数据

<span style="font-size:14px;">/** * 重置 手机 sd * @param context */public static void wipe(Context context){// DevicePolicyManagerDevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);//重置 dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//sd格式化}}</span>

1.4. 超级管理者权限

权限  管理员权限   (按照开发者文档)

http://android.xsoftlab.net/guide/topics/admin/device-admin.html

1, 配置权限描述文件 做减法

<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >

    <uses-policies>

        <!-- 重置 -->

        <reset-password />

        <!-- 锁屏 -->

        <force-lock />

        <!-- 重置手机 -->

        <wipe-data />

        <!-- <limit-password /> -->

        <!-- <watch-login /> -->

        <!-- <expire-password /> -->

        <!-- <encrypted-storage /> -->

        <!-- <disable-camera /> -->

    </uses-policies>

</device-admin>

2, 配置Reciever的子类  BroadCastreceiver

                            |---DeviceAdminReceiver  接收授权成功的广播

<!--         配置 -->        <receiver            android:name="com.itheima.superadmin.receiver.MobileSafeDeviceAdminReceiver"            android:description="@string/desc"            android:label="@string/title"            android:permission="android.permission.BIND_DEVICE_ADMIN" >            <meta-data                android:name="android.app.device_admin"                android:resource="@xml/device_admin_mobilesafe" />            <intent-filter>                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />            </intent-filter>        </receiver>

3,代码激活/失活

<span style="font-size:14px;">/** * 激活 *  * @param context */public static void active(Context context) {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);// ComponentName: 组件属性的对象 举例 <activtity name= <service name <receiver// nameComponentName cn = new ComponentName(context, MobileSafeDeviceAdminReceiver.class);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);// 打开授权界面context.startActivity(intent);}</span>

<span style="font-size:14px;">/** * 超级管理账号的应用不能被卸载 *  * @param context */public static void unactive(Context context) {// ComponentName: 组件属性的对象 举例 <activtity name= <service name <receiver// nameComponentName cn = new ComponentName(context, MobileSafeDeviceAdminReceiver.class);// DevicePolicyManagerDevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);dpm.removeActiveAdmin(cn);}</span>

ComponentName

<span style="font-size:14px;">代表name属性的对象//ComponentName name=new ComponentName(包名, 类名);<activity name//ComponentName name=new ComponentName(getPackageName(), "com.itheima.mobilesafe.act.AToolsActivity");//<activity nameComponentName name=new ComponentName("com.itheima.mobilesafe", "com.itheima.mobilesafe.act.AToolsActivity");//<activity name//Intent intent = new Intent(this, AToolsActivity.class);Intent intent=new Intent();intent.setComponent(name);startActivity(intent);$BJ$</span>

销毁数据  

1.删除短信

2.删除联系人

3.删除通话记录 邮箱

4.查询手机所有文件的技术 逐个删除

<span style="font-size:14px;">@ViewInject(R.id.admin_active)Button admin_active;@OnClick(R.id.admin_active)public void admin_active(View view){if(DeviceUtils.isActivity(this)){DeviceUtils.unactive(this);admin_active.setText("点击激活");}else{DeviceUtils.active(this);admin_active.setText("点击取消激活");}}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();if(DeviceUtils.isActivity(this)){admin_active.setText("点击取消激活");}else{admin_active.setText("点击激活");}}</span>

Activity 页面  

1.继承

2.重写 (1.布局  分析界面+所有布局+常用控件 设置setContentView2. 写事件)

3.配置

4.打开

快速开发的技巧

style  重用属性

1. 控件 重用属性

2. 作于Activity或者 Applicaton 系统  theme

include 重用布局

 

selector选择器

 

使用点九图

点九图的制作 sdk/tools

 

BroadcastReciever广播接收者 接收系统内的广播 Intent

1.继承

2.重写

3.配置

短信拦截

1.action

2.权限 RECEIVE_SMS

3.priroty

4.解析短信

5.销毁 abortBroadcast();

Boot拦截

1.action

2.权限  RECEIVE_BOOT_COMPELTET

超级管理员

文档完成

 

功能api

MediaPalyer

播放器

LocationManager

android 集成的定位框架

LocationMnaager核心类 封装复杂的定位过程

Criteria 查询   1.费用 2.精度 3.电量

LocationListener 接收定位信息的监听器

权限  ACCESS_FINE_LOCATION
ACCESS_CORSE_LOCATION

ACESS_MOCK_LOCATION

DevicePolicyManager

设备管理 +添加权限 

resetPassword

lockNow

wipeData();


 



















0 0
原创粉丝点击