android 设备管理屏幕锁定实现方法
2013-12-09 09:10
477 查看
android 实现屏幕锁定需要用户手工去激活设备管理
直接贴代码了
MainActivity.java
AdminReceiver.java
直接贴代码了
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); } }
相关文章推荐
- Android Tombstone/Crash的log分析和定位(救命的文章)
- Android 布局方式学习
- Android不同形式的Dialog对话框
- android sqllite 支持的数据类型
- Android--使用Canvas绘图
- Android--从系统Camera和Gallery获取图片优化
- android真机 adb调试sqlite数据库
- 从NDK在非Root手机上的调试原理探讨Android的安全机制
- 从NDK在非Root手机上的调试原理探讨Android的安全机制
- 从NDK在非Root手机上的调试原理探讨Android的安全机制 推荐
- Android下拉刷新完全解析
- android EditText控件事件监听
- 尝试用Canvas 的drawText绘字符串的时候
- Android搭建开发环境
- Android技术体系结构
- Android开发者提升技能水平的大招
- android 中的 res 资源
- Android学习之常见的布局方式
- android中页面跳转以及数据在Activity之间的传递
- android涂鸦实现