Android简易实战教程--第五话《开发一键锁屏应用》
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接
Device Administration
1,创建类DeviceAdminReceiver的子类
如:com.itydl.lockscreen.DeviceAdminSample
2,在清单文件中配置广播接收者
<receiver
android:name="com.itydl.lockscreen.DeviceAdminSample"
android:description="@string/sample_device_admin_description"
android:label="@string/sample_device_admin"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_sample" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
3,配置字符串相关信息
<string name="activity_sample_device_admin">设备管理员</string>
<string name="sample_device_admin">管理员</string>
<string name="sample_device_admin_description">开启设备管理员,不开启扣2000块</string>
4,在res目录下创建xml文件夹,在该文件夹下创建deviceadminsample.xml文件,内容:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
</uses-policies>
</device-admin>
5,在代码中创建设备管理器和组件
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
ComponentName who = new ComponentName(this, DeviceAdminSample.class);
6,写功能
dpm.lockNow();一键锁屏
上述步骤有些晦涩,看一下实际操作步骤(建议通过阅读官网AP文档I一步步操作):
<string name="activity_sample_device_admin">设备管理员</string>
<string name="sample_device_admin">管理员</string>
<string name="sample_device_admin_description">开启设备管理员,不开启扣2000块</string>
删除掉配置文件中系统自带的activity节点信息。修改复制过来的activity标签name为我们工程的活动名称。
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.itydl.lockscreen"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="17" />
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.itydl.lockscreen.MainActivity"
- android:label="一键锁屏" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <receiver
- android:name="com.itydl.lockscreen.DeviceAdminSample"
- android:description="@string/sample_device_admin_description"
- android:label="@string/sample_device_admin"
- android:permission="android.permission.BIND_DEVICE_ADMIN" >
- <meta-data
- android:name="android.app.device_admin"
- android:resource="@xml/device_admin_sample" />
- <intent-filter>
- <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
- </intent-filter>
- </receiver>
- </application>
- </manifest>
- package com.itydl.lockscreen;
- import android.os.Bundle;
- import android.app.Activity;
- import android.app.admin.DevicePolicyManager;
- import android.content.ComponentName;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- public class MainActivity extends Activity {
- private DevicePolicyManager dmp;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //获取设备管理员对象
- dmp = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
- }
- /**
- * 一键锁屏
- *
- * @param v
- */
- public void lockScreen(View v) {
- // 如果没有激活设备管理员,提醒用户做事
- ComponentName who = new ComponentName(this, DeviceAdminSample.class);
- if (dmp.isAdminActive(who)) {// true表示已经激活,测试管理员是否已经激活。这里的who其实就是我们自定义的空的广播接收者
- dmp.lockNow();// 一键锁屏
- } else {
- ////帮助用户打开激活设备管理器的界面,让用户手动激活
- /**根据官方文档,写出启动设备管理器的活动
- * // Launch the activity to have the user enable our admin. Intent
- * intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
- * intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
- * mDeviceAdminSample);
- * intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
- * mActivity.getString(R.string.add_admin_extra_app_text));
- * startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
- */
- Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
- intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
- who);
- intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
- "设备管理器。。。");
- startActivityForResult(intent, 1);
- }
- }
- }
此时记得去设备管理器取消激活。
点击一键锁屏后,自动跳转到设备管理器页面,按下Activiate。应用就生效了。
已经开发完毕,见下一篇博客地址:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接
Android简易实战教程--第五话《开发一键锁屏应用》的更多相关文章
- Android简易实战教程--第五十话《动画扫描》
祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...
- Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》
转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...
- Android简易实战教程--第六话《开发一键锁屏应用2·完成》
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接 上一篇,初步开发了这个应用,功能都有了(见http:// ...
- Android简易实战教程--第二十七话《自定义View入门案例之开关按钮详细分析》
转载此博客请注明出处点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52444145 对于自定义view,可能是一个比较大的 ...
- Android简易实战教程--第十七话《自定义彩色环形进度条》
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52203533 点击打开链接 在Android初级教程里面,介绍了shape用法 ...
- Android简易实战教程--第二十三话《绚丽的菜单项》
转载本博客请注明出处:点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52327456 今天这篇稍微增强点代码量,可能要多花上5分钟喽 ...
- Android简易实战教程--第二十话《通过广播接收者,对拨打电话外加ip号》
没睡着觉,起来更篇文章吧哈哈!首先祝贺李宗伟击败我丹,虽然我是支持我丹的,但是他也不容易哈哈,值得尊敬的人!切入正题:这一篇来介绍个自定义广播接收者. 通常我们在外拨电话的时候,一般为使用网络电话.如 ...
- Android简易实战教程--第十三话《短信备份和还原~三》
之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...
- Android简易实战教程--第十话《模仿腾讯手机助手小火箭发射详解》
之前对系统自带的土司的源码做了简要分析,见博客:点击打开链接 这一篇给一个小案例,自定义土司,模拟腾讯卫士的小火箭发射.如果想要迅速看懂代码,建议先去看一下上篇介绍点击打开链接 首先,定义一个服务,在 ...
随机推荐
- [bzoj4763]雪辉&[bzoj4812][Ynoi2017]由乃打扑克
来自FallDream的博客,未经允许,请勿转载,谢谢. cut掉部分题面. 给一个n个点的树,点有点权,有m次询问,每次询问多条链的并有多少种不同的点权以及它的mex mex就是一个集合中最小的没有 ...
- Django中ORM操作
ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...
- mysql 及 posgresql之优劣势大比拼
特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例.一个实例可以管理一个或多个数据库.一台服务器可以运行多个 mysqld 实例.一个实例管理器可以监视 ...
- shell 报错:syntax error: unexpected end of file
有时执行脚本时会报错: [root@host1 shell]# sh -x test.sh + $'\r' : command not found test.: syntax error: unexp ...
- Unique-paths (动态规划)
题目描述 A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below) ...
- Python作业之三次登陆锁定用户
作业之三次登陆锁定用户 作业要求如下: 1. 输入用户名和密码 2. 认证成功提示欢迎信息 3. 认证失败三次锁定用户 具体代码如下: 方法1: import os#导入os模块 if os.path ...
- input中v-model和value不能同时调用时解决方案
<input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...
- 图解JavaScript原型和原型链
先看看最简单的栗子: //构造函数 function People(name, age){ this.name = name; this.age = age; } //原型对象(所有由构造函数实例而来 ...
- Zookeeper和Chubby【分布式协调系统】
前言(对于协调系统来说其客户端往往是分布式集群) 大规模分布式系统需要解决各种类型的协调需求: 当集群中有新的进程或服务器加入时,如何探测到它的加入?如何能够自动获取配置参数? 当配置信息被某个进程或 ...
- java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
解决此异常的方法是: 删除您添加在Referenced Libraries 下的catalina.jar包, 然后删除Webapp下的部署程序,重新部署后一切正常. ? --------------- ...