android 设备管理屏幕锁定实现方法

android 实现屏幕锁定需要用户手工去激活设备管理

直接贴代码了


MainActivity.java

package com.example.lockscreen;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

/**
 * 主Activity类
 * 作为初始UI等
 * @author wangwei
 *
 */
public class MainActivity extends Activity {

	private Button enableDevice,disableDevice,lockScreen;
	/*
	 * 这是设备管理的主类。通过它可以实现屏幕锁定、屏幕亮度调节、出厂设置等功能。
	 */
	private DevicePolicyManager dpm;
	/*
	 * componentName可以用于启动第三方程序的代码
	 */
	private ComponentName componentName;
	
	/**
	 * 打印日志信息
	 * @param msg
	 * 			要打印信息
	 */
	private void log(String msg){
		Log.i("AdminReceiver", msg);
	}
	
	/**
	 * 显示提示信息
	 * @param context
	 * @param msg
	 */
	private void showToast(Context context, String msg){
		Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		init();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	/**
	 * 初始化
	 */
	private void init(){
		log("初始化");
		enableDevice = (Button) findViewById(R.id.enableDevice);
		disableDevice = (Button) findViewById(R.id.disableDevice);
		lockScreen = (Button) findViewById(R.id.lockScreen);
		
		enableDevice.setOnClickListener(listener);
		disableDevice.setOnClickListener(listener);
		lockScreen.setOnClickListener(listener);
		
		
		//获取系统服务
		dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
		componentName = new ComponentName(this, AdminReceiver.class);
	}
	
	private OnClickListener listener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.enableDevice:
				//激活设备管理
				enableDevice();
				break;
			case R.id.disableDevice:
				//禁用设备管理
				disableDevice();
				break;
			case R.id.lockScreen:
				//锁屏(调用系统锁屏)
				lockScreen();
				break;
			default:
				break;
			}
		}
	};
	
	/**
	 * 激活设备管理
	 */
	private void enableDevice(){
		Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
		intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
		intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "测试。。。说明。。。");
		startActivityForResult(intent, 0);
	}
	
	/**
	 * 禁用设备管理
	 */
	private void disableDevice(){
		boolean bActive = dpm.isAdminActive(componentName);
		if(bActive){
			dpm.removeActiveAdmin(componentName);
		}
	}
	
	/**
	 * 锁屏(调用系统锁屏)
	 */
	private void lockScreen(){
		boolean bActive = dpm.isAdminActive(componentName);
		if (bActive) {
			dpm.lockNow();
		}
	}
	
}

AdminReceiver.java

package com.example.lockscreen;

import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

/**
 * 设备管理消息接收类
 * @author wangwei
 *
 */
public class AdminReceiver extends DeviceAdminReceiver {

	/**
	 * 打印日志信息
	 * @param msg
	 * 			要打印信息
	 */
	private void log(String msg){
		Log.i("AdminReceiver", msg);
	}
	
	/**
	 * 显示提示信息
	 * @param context
	 * @param msg
	 */
	private void showToast(Context context, String msg){
		Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
	}
	
	@Override
	public DevicePolicyManager getManager(Context context) {
		log("调用了getManager方法");
		return super.getManager(context);
	}
	
	@Override
	public ComponentName getWho(Context context) {
		log("调用了getWho方法");
		return super.getWho(context);
	}
	
	/**
	 * 禁用
	 */
	@Override
	public void onDisabled(Context context, Intent intent) {
		log("调用了onDisabled方法");
		showToast(context, "禁用设备管理");
		super.onDisabled(context, intent);
	}
	
	@Override
	public CharSequence onDisableRequested(Context context, Intent intent) {
		log("调用了onDisableRequested方法");
		return super.onDisableRequested(context, intent);
	}
	
	/**
	 * 激活
	 */
	@Override
	public void onEnabled(Context context, Intent intent) {
		log("调用了onEnabled方法");
		showToast(context, "启动设备管理");
		super.onEnabled(context, intent);
	}
	
	@Override
	public void onPasswordChanged(Context context, Intent intent) {
		log("调用了onPasswordChanged方法");
		super.onPasswordChanged(context, intent);
	}
	
	@Override
	public void onPasswordFailed(Context context, Intent intent) {
		log("调用了onPasswordFailed方法");
		super.onPasswordFailed(context, intent);
	}
	
	@Override
	public void onPasswordSucceeded(Context context, Intent intent) {
		log("调用了onPasswordSucceeded方法");
		super.onPasswordSucceeded(context, intent);
	}
	
	@Override
	public void onReceive(Context context, Intent intent) {
		log("调用了onReceive方法");
		super.onReceive(context, intent);
	}
	
	@Override
	public IBinder peekService(Context myContext, Intent service) {
		log("调用了peekService方法");
		return super.peekService(myContext, service);
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值