您的位置:首页 > 其它

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

2016-06-10 13:34 459 查看
经纬度

地球上的坐标

定位原理

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) {
// ① 创建定位服务LocationManager
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
// ② 创建条件Criteria
List<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): gps
Criteria 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 :封装经纬 度坐标的对象
@Override
public 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);
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}

}
}</span>

1.1. 拦截指令

① 创建BroadCastReceiver

② Action是类型 

③ 权限  短信内容 涉隐私

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

⑤ 解析byte[]-->SmsMessage

<span style="font-size:14px;">public class SmsReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// ① 创建BroadCastReceiver
// ② Action是类型
// ③ 权限 短信内容 涉隐私
// ④ 有序广播 要设置优先级priority
int max = Integer.MAX_VALUE;
// ⑤ 解析byte[]-->SmsMessage
Log.i("wzx", "onReceive----接收短信" + intent.getAction());
// pdus 协议单元 km
Object[] 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) {
// DevicePolicyManager
DevicePolicyManager 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)
{
// DevicePolicyManager
DevicePolicyManager 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
// name
ComponentName 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
// name
ComponentName cn = new ComponentName(context, MobileSafeDeviceAdminReceiver.class);
// DevicePolicyManager
DevicePolicyManager 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 name
ComponentName 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("点击取消激活");
}
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.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();

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: