2.定位、擦除数据、锁屏、激活设备管理员(LocationManager、DevicePolicyManager)

1 一个短信广播接收者,用于安全号码控制丢失手机播放报警音乐、锁屏等

package org.heima.mobilesafe01.receiver;

import org.heima.mobilesafe01.R;
import org.heima.mobilesafe01.constants.Constants;
import org.heima.mobilesafe01.service.GPSService;
import org.heima.mobilesafe01.utils.L;
import org.heima.mobilesafe01.utils.PreferencesUtils;

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.provider.MediaStore.Audio.Media;
import android.telephony.SmsMessage;
import android.text.TextUtils;

/**
 * @author U 短信的接收广播
 */
public class SmsReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {// the main thread
															// of,timeout:10
															// seconds

		DevicePolicyManager dpm = (DevicePolicyManager) context
				.getSystemService(Context.DEVICE_POLICY_SERVICE);
		ComponentName who = new ComponentName(context, AdminReceiver.class);
		String safeNum = PreferencesUtils.getString(context,
				Constants.SJFD_SAFE_NUM);
		if (TextUtils.isEmpty(safeNum)) {
			return;
		}
		// 怎么获取短信内容
		// 短信号码
		Object[] objs = (Object[]) intent.getExtras().get("pdus");
		for (Object obj : objs) {
			SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);
			String msgBody = smsMessage.getMessageBody();// 获取短信的内容
			String sender = smsMessage.getOriginatingAddress();// 获取发送号码
			L.d("sender:" + sender + ";msgBody:" + msgBody);
			if (!safeNum.equals(sender)) {// 当发送者不是安全号码的时候,就不处理
				return;
			}
			// if else jdk1.6
			switch (msgBody) {
			case "#*music*#":
				L.d("music");
				MediaPlayer mp = MediaPlayer.create(context, R.raw.alarm);
				mp.setVolume(1.0f, 1.0f);
				mp.setLooping(true);
				mp.start();
				break;
			case "#*location*#":
				L.d("location");
				// 开启一个服务
				context.startService(new Intent(context, GPSService.class));
				break;
			case "#*lockscreen*#":
				L.d("lockscreen");
				if (dpm.isAdminActive(who)) {
					dpm.lockNow();
					dpm.resetPassword("123", 0);
				}
				break;
			case "#*wipedata*#":
				L.d("wipedata");
				if (dpm.isAdminActive(who)) {
					dpm.wipeData(0);
				}
				break;
			default:
				break;
			}

		}
	}

}

2 用于定位的服务

package org.heima.mobilesafe01.service;

import org.heima.mobilesafe01.constants.Constants;
import org.heima.mobilesafe01.utils.L;
import org.heima.mobilesafe01.utils.PreferencesUtils;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.telephony.SmsManager;
import android.text.TextUtils;

/**
 * @author U
 * 定位的服务
 */
public class GPSService extends Service {

	private LocationManager mLm;

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onCreate() {
		super.onCreate();
		L.d("GPSService:onCreate");
		mLm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
		mLm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 5, 5,
				new LocationListener() {

					@Override
					public void onStatusChanged(String provider, int status,
							Bundle extras) {

					}

					@Override
					public void onProviderEnabled(String provider) {

					}

					@Override
					public void onProviderDisabled(String provider) {

					}

					@Override
					public void onLocationChanged(Location location) {
						double longitude = location.getLongitude();
						double latitude = location.getLatitude();
						// 发短信给安全号码
						String safeNum = PreferencesUtils.getString(
								getApplicationContext(),
								Constants.SJFD_SAFE_NUM);
						if(TextUtils.isEmpty(safeNum)){
							return;
						}
						// 发短信给安全号码
						SmsManager.getDefault().sendTextMessage(safeNum, null,longitude+","+latitude , null, null);
					}
				});
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		L.d("GPSService:onDestroy");
	}
}

3 一个界面有个按钮点击激活/取消设备管理员权限的Activity

package org.heima.mobilesafe01;

import org.heima.mobilesafe01.receiver.AdminReceiver;
import org.heima.mobilesafe01.utils.ImageTextViewUtils;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ContentView;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;

@ContentView(R.layout.activity_setup4)
public class SetupActivity4 extends BaseSetupActivity {

	private static final int REQUESTCODE = 1001;
	private DevicePolicyManager mDpm;
	private ComponentName mWho;
	@ViewInject(R.id.btn_admin)
	private Button btnAdmin;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		initView();
		initData();
	}

	private void initView() {
		ViewUtils.inject(this);
	}

	private void initData() {
		mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
		mWho = new ComponentName(this, AdminReceiver.class);
		initState();
	}

	private void initState() {
		if (mDpm.isAdminActive(mWho)) {
			ImageTextViewUtils.setTextViewImage(this, btnAdmin,
					R.drawable.admin_activated, ImageTextViewUtils.RIGHT);
		} else {
			ImageTextViewUtils.setTextViewImage(this, btnAdmin,
					R.drawable.admin_inactivated, ImageTextViewUtils.RIGHT);
		}
	}

	/*
	 * public void pre(View view) { Intent intent = new Intent(this,
	 * SetupActivity3.class); startActivity(intent); finish(); }
	 * 
	 * public void next(View view) { Intent intent = new Intent(this,
	 * SetupActivity5.class); startActivity(intent); finish(); }
	 */

	@Override
	protected boolean performNext() {
		Intent intent = new Intent(this, SetupActivity5.class);
		startActivity(intent);
		return false;
	}

	@Override
	protected boolean performPre() {
		Intent intent = new Intent(this, SetupActivity3.class);
		startActivity(intent);
		return false;
	}

	@OnClick(R.id.btn_admin)
	public void doActivate(View view) {
		if (mDpm.isAdminActive(mWho)) {
			mDpm.removeActiveAdmin(mWho);
			ImageTextViewUtils.setTextViewImage(this, btnAdmin,
					R.drawable.admin_inactivated, ImageTextViewUtils.RIGHT);
		} else {
			// 假如没有激活
			// 参考文档
			Intent intent = new Intent();
			intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
			intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
					mWho);// ComponentName
			intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
					"广州黑马一期,无敌就是寂寞");
			startActivityForResult(intent, REQUESTCODE);
		}
		
//		RadioButton
//		RadioGroup
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(requestCode==REQUESTCODE){
			if(resultCode==Activity.RESULT_OK){
				initState();
			}
		}
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值