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

    xiaoxiao2021-03-26  16

    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(); } } } }

    转载请注明原文地址: https://ju.6miu.com/read-659693.html

    最新回复(0)