Android一键锁屏源码

APK下载

源程序下载

锁屏流程如下(参考于Android一键锁屏开发全过程【源码】【附图】

源码参考于一键锁屏
源码

一共有2个Java文件:

1 package com.example.onekeylock.app;
2
3 import android.app.admin.DeviceAdminReceiver;
4
5 public class AdminReceiver extends DeviceAdminReceiver{}

AdminReceiver.java

 1 package com.example.onekeylock.app;
2
3 import android.app.Activity;
4 import android.app.admin.DevicePolicyManager;
5 import android.content.ComponentName;
6 import android.content.Context;
7 import android.content.Intent;
8 import android.os.Bundle;
9 import android.support.v7.app.ActionBarActivity;
10
11 public class MainActivity extends ActionBarActivity
12 {
13 private DevicePolicyManager policyManager;
14 private ComponentName componentName;
15 private static final int MY_REQUEST_CODE = 9999;
16
17 @Override
18 protected void onCreate(Bundle savedInstanceState)
19 {
20 super.onCreate(savedInstanceState);
21 //获取设备管理服务
22 policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
23 componentName = new ComponentName(this, AdminReceiver.class);
24 /*
25 * 假如先判断是否有权限,如果没有则调用activeManage(),然后立即锁屏,再finish()。
26 * 这样做是有问题的,因为activeManage()可能还在等待另一个Activity的结果,那么此时依然没有权限却
27 * 执行了lockNow(),这样就出错了。
28 * 处理方法有2个:
29 * 1、是重写OnActivityResult()函数,在里面判断是否获取权限成功,是则锁屏并finish()
30 * 否则继续调用activeManage()获取权限(这样激活后立即锁屏,效果很好)
31 * 2、不重写OnActivityResult()函数,第一次获取权限后不锁屏而立即finish(),这样从理论上说也可能
32 * 失败,可能权限还没获取好就finish了(这样激活后就回到桌面,还得再按一次锁屏才能锁)
33 * 综上推荐第一种方法。*/
34
35 //判断是否有锁屏权限,若有则立即锁屏并结束自己,若没有则获取权限
36 if (policyManager.isAdminActive(componentName))
37 {
38 policyManager.lockNow();
39 finish();
40 }
41 else
42 {
43 activeManage();
44 }
45 setContentView(R.layout.activity_main); //把这句放在最后,这样锁屏的时候就不会跳出来(闪一下)
46 }
47
48 //获取权限
49 private void activeManage()
50 {
51 // 启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器
52 Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
53
54 //权限列表
55 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
56
57 //描述(additional explanation)
58 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "激活后才能使用锁屏功能哦亲^^");
59
60 startActivityForResult(intent, MY_REQUEST_CODE);
61 }
62
63 @Override
64 protected void onActivityResult(int requestCode, int resultCode, Intent data)
65 {
66 //获取权限成功,立即锁屏并finish自己,否则继续获取权限
67 if (requestCode == MY_REQUEST_CODE && resultCode == Activity.RESULT_OK)
68 {
69 policyManager.lockNow();
70 finish();
71 }
72 else
73 {
74 activeManage();
75 }
76 super.onActivityResult(requestCode, resultCode, data);
77 }
78 }

MainActivity.java

布局文件:

1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="fill_parent"
3 android:layout_height="fill_parent">
4 </RelativeLayout>

activity_main.xml

这个是获取权限时显示的权限列表

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <device-admin
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6 <uses-policies>
7 <!--强制锁屏-->
8 <force-lock/>
9 </uses-policies>
10 </device-admin>

lock.xml

修改原来的styles.xml

1 <resources>
2 <!-- Base application theme. -->
3 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
4 <!-- Customize your theme here. -->
5 <item name="android:windowNoTitle">true</item>
6 <item name="android:windowIsTranslucent">true</item>
7 </style>
8 </resources>

styles.xml

配置文件

 1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.onekeylock.app">
4 <application
5 android:allowBackup="true"
6 android:icon="@drawable/onekeylock"
7 android:label="@string/app_name"
8 android:theme="@style/AppTheme">
9 <activity
10 android:name="com.example.onekeylock.app.MainActivity"
11 android:label="@string/app_name">
12 <intent-filter>
13 <action android:name="android.intent.action.MAIN"/>
14 <category android:name="android.intent.category.LAUNCHER"/>
15 </intent-filter>
16 </activity>
17 <receiver
18 android:name=".AdminReceiver"
19 android:label="@string/app_name"
20 android:description="@string/app_name"
21 android:permission="android.permission.BIND_DEVICE_ADMIN">
22 <meta-data
23 android:name="android.app.device_admin"
24 android:resource="@layout/lock"/>
25 <intent-filter>
26 <action
27 android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
28 </intent-filter>
29 </receiver>
30 </application>
31 </manifest>

AndroidManifest.xml

一个Activity,打开来默认是显示它的TitleBar(标题栏)的,而锁屏的原理就是先打开Activity,再启动锁屏功能,最后把自己结束掉。

而最难的部分在于,当打开软件的时候,该软件会出现闪屏(闪现标题栏),然后才锁屏。

一个比较好的解决方法是把该Activity设置为透明的,这样即使出现标题栏也看不到。

网上大部分代码是这样解决的,在配置文件中,为Activity标签添加一个属性android:[email protected]:style/Theme.Translucent

但是由于我新建项目的时候为该项目选择了系统自带的主题(Theme.AppCompat.Light.DarkActionBar),所以配置文件中,Application标签已经声明了主题(见下图),如果继续在Activity中添加主题的话会运行出错!

OK,那我把Application的主题删了,只为Activity配置透明主题行了吧………………可是还是运行出错!没深入研究过Android,所以不知怎么会这样……

最后磕磕碰碰,摸索出一个方法,修改Application的主题,添加下面2句(只添加1句透明的应该也行,没试过)

至此,终于不再闪屏了……

时间: 2024-10-23 17:34:59

Android一键锁屏源码的相关文章

android一键锁屏

原文地址:http://www.fengfly.com/plus/view-209437-1.html 要用到下面两个类: DeviceAdminReceiver 设备管理组件.这个类提供了一个方便解释由系统发出的意图的动作.你的设备管理应用程序必须包含一个DeviceAdminReceiver的子类.本程序中,就代表一个手机上的设备管理器. DevicePolicyManager 一个管理设备上规范的类. 大多数客户端必须声明一个用户当前已经启用的DeviceAdminReceiver. 这个

Android一键锁屏和清除数据代码实现

android 2.2引入了支持企业应用程序提供Android设备管理API.设备管理API提供了设备管理功能在系统级别.管理员也可以远程擦(即恢复工厂默认值)丢失或被盗的手机. 但对于实现这些功能需要引入设备超级管理员(device admin),具体2.看文档 Develop-->API Guides--->Administration 下面我们看实现: 首先创建MyAdmin类,继承DeviceAdminReceiver 自己无需实现任何东西 AndroidManifest.xml配置这

一键锁屏、一键删除、设备管理器

设备管理器的操作步骤 1.创建类DeviceAdminReceiver的子类 package com.itheima62.lockscreen; import android.app.admin.DeviceAdminReceiver; public class DeviceAdminSample extends DeviceAdminReceiver { } 2,在清单文件中配置广播接收者 <receiver android:name="com.itheima62.lockscreen.

Android应用源码之一键锁屏

本项目是一个一键锁屏的小例子源码,安装以后会默认申请激活设备管理器,激活以后点击桌面图标即可实现一键锁屏,项目比较简单代码量也不多,想要学习锁屏或者设备管理器知识的朋友可以看一下,本项目默认编译版本4.4.2编码UTF-8 下载地址:http://www.devstore.cn/code/info/551.html 运行截图

Android简易实战教程--第六话《开发一键锁屏应用2&#183;完成》

转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51885687点击打开链接 上一篇,初步开发了这个应用,功能都有了(见http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 ).但是遗留了两个问题.1.还是无法卸载:2.必须手动去点击应用程序进入程序,再点击按钮,这显得很麻烦. 这一篇就解决上面两个问题,做出最好的效果. 首先解决无法卸载问题: 在清单文件

Android Device Administration 设备管理器——一键锁屏的实现

Android Device Administration 设备管理器--锁屏的实现 最近研究了一下安全这一块的内容,当然,我是比较水的,所以也拿不出什么好知识点,但是有一些冷门的东西我还是可以聊聊的,就拿这个锁屏来说吧,我们现在市面上有一些一键锁屏的软件 我们可以看到,是数不胜数的,所以,其实他一开始使用的时候,都需要请求设备管理器 我们可以看到,只有当我们激活的时候,我们才可以使用它,那么,他到底是什么东西呢?其实,当我们激活之后,我们可以在我们手机的设置--安全--设备管理器里面看到他的所

Android简易实战教程--第五话《开发一键锁屏应用》

转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 Device Administration 对于这个应用,市场上很多,但是看一下评论就知道效果有多差了,因为99%一键锁屏应用没办法卸载.今天就开发一个小应用,实现轻松点击一键锁屏,同时支持卸载... 通查看谷歌原文档,有设备管理器的API,从这里可以抽取一些代码,开发出一个小应用,即即将介绍的<一键锁屏>. 根据文档翻译,获取设备管理器的大致步骤如

Android中锁屏密码算法解析以及破解方案

一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机恶意样本.现在的锁机样本原理强制性太过于复杂,没意义.所以本文就先来介绍一下android中的锁屏密码算法原理. 二.锁屏密码方式 我们知道Android中现结单支持的锁屏密码主要有两种: 一种是手势密码,也就是我们常见的九宫格密码图 一种是输入密码,这个也分为PIN密码和复杂字符密码,而PIN密码

Android 上千实例源码分析以及开源分析

Android 上千实例源码分析以及开源分析(百度云分享) 要下载的直接翻到最后吧,项目实例有点多. 首先 介绍几本书籍(下载包中)吧. 01_Android系统概述 02_Android系统的开发综述 03_Android的Linux内核与驱动程序 04_Android的底层库和程序 05_Android的JAVA虚拟机和JAVA环境 06_Android的GUI系统 07_Android的Audio系统 08_Android的Video 输入输出系统 09_Android的多媒体系统 10_