您的位置:首页 > 移动开发 > Android开发

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

2013-12-09 09:10 477 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: