Android锁屏软件

需求描述:锁屏软件就是点击应用然后直接锁屏,不会弹出任何界面

设计思路:应用启动以后通过getSystemService获取系统的服务,调用安卓系统的DevicePolicyManager和ComponentName来对系统进行操作,先判断用户是否有相应的权限,如果有,直接锁屏,如果没有就先获取系统权限,再锁屏

废话不说,直接上代码

Main.java(主页面)

 1 package com.example.wangshibang.screenlock;
 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
10 /**
11  * Created by wangshibang on 2016-11-8.
12  */
13 public class Main extends Activity {
14     private DevicePolicyManager policyManager;//管理和操作设备的API
15     private ComponentName componentName;//打开其他应用程序中的Activity或服务
16
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21
22         //获取设备管理服务
23         policyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
24         //AdminReceiver 继承自 DeviceAdminReceiver
25         componentName = new ComponentName(this, AdminReceiver.class);
26
27         //主方法
28         myLock();
29
30         //killMyself ,锁屏之后就立即kill掉我们的Activity,避免资源的浪费
31         android.os.Process.killProcess(android.os.Process.myPid());
32     }
33
34     private void myLock(){
35         boolean isActive = policyManager.isAdminActive(componentName);
36         if(!isActive){
37             //若没有权限就去获取权限
38             activeManage();
39
40             return;
41             //锁屏
42             //policyManager.lockNow();
43         }
44         else {
45             policyManager.lockNow();
46         }
47     }
48
49     private void activeManage(){
50         //启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器
51         Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
52         //权限列表
53         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
54         //描述(additional explanation)
55         intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "----Other Description----");
56         startActivityForResult(intent, 0);
57     }
58 }

AdminReceiver.java

 1 package com.example.wangshibang.screenlock;
 2
 3 import android.app.admin.DeviceAdminReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.content.SharedPreferences;
 7 import android.widget.Toast;
 8
 9 /**
10  * Created by wangshibang on 2016-11-8.
11  */
12 public class AdminReceiver extends DeviceAdminReceiver {
13
14     public static SharedPreferences getDevicePreference(Context context){
15         //获取设备存储的数值
16         return context.getSharedPreferences(DeviceAdminReceiver.class.getName(),0);
17     }
18
19     // 密码的特点
20     public static String PREF_PASSWORD_QUALITY = "password_quality";
21     // 密码的长度
22     public static String PREF_PASSWORD_LENGTH = "password_length";
23
24     public static String PREF_MAX_FAILED_PW = "max_failed_pw";
25
26     void showToast(Context context, CharSequence text) {
27         Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
28     }
29
30     @Override
31     public void onEnabled(Context context, Intent intent) {
32         // TODO Auto-generated method stub
33         showToast(context, "设备管理:可用");
34     }
35
36     @Override
37     public void onDisabled(Context context, Intent intent) {
38         // TODO Auto-generated method stub
39         showToast(context, "Deactive successful!");
40     }
41
42     @Override
43     public CharSequence onDisableRequested(Context context, Intent intent) {
44         // TODO Auto-generated method stub
45         return "Are you sure want to Deactive?";
46     }
47
48     @Override
49     public void onPasswordChanged(Context context, Intent intent) {
50         // TODO Auto-generated method stub
51         showToast(context, "设备管理:密码己经改变");
52     }
53
54     @Override
55     public void onPasswordFailed(Context context, Intent intent) {
56         // TODO Auto-generated method stub
57         showToast(context, "设备管理:改变密码失败");
58     }
59
60     @Override
61     public void onPasswordSucceeded(Context context, Intent intent) {
62         // TODO Auto-generated method stub
63         showToast(context, "设备管理:改变密码成功");
64     }
65 }

AndroidManifest.xml

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

res文件夹下建一个xml文件夹,里面有个lock_screen.xml文件

lock_screen.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <device-admin xmlns:android="http://schemas.android.com/apk/res/android">
 3     <uses-policies>
 4         <!-- 强行锁定  在里仅这个是需要的-->
 5         <force-lock />
 6         <!-- 清除所有数据(恢复出厂设置) -->
 7         <wipe-data />
 8         <!-- 重置密码 -->
 9         <reset-password />
10         <!-- 限制密码选择 -->
11         <limit-password />
12         <!-- 监控登录尝试 -->
13         <watch-login />
14     </uses-policies>
15 </device-admin>

最后是什么都没有的activity_main.xml文件

1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3     android:orientation="vertical" android:layout_width="match_parent"
4     android:layout_height="match_parent">
5
6 </LinearLayout>

楼主才疏学浅,不喜勿喷

最后附上源码的链接:链接:http://pan.baidu.com/s/1i5x5s6x 密码:es42

时间: 2024-10-08 19:35:18

Android锁屏软件的相关文章

android锁屏软件制作

转载请标明出处http://blog.csdn.net/mingyue_1128 一.首先要创建一个Service保证Service一直开启,同时不被一键清理掉. 二.屏蔽掉系统的锁屏 三.创建锁屏的Activity,在Activity中屏蔽掉back,menu,home键 四.保证自己的进程不在最近任务中出现 一.创建一个Service名字为LockService public class LockService extends Service{ private KeyguardManager

“重力锁屏”软件简介

一.产品介绍 重力锁屏是基于android系统的一款锁屏软件.它利用重力感应器来判断用户的动作从而自动锁屏亮屏,是锁屏软件的一大创新.相比传统的锁屏软件,“重力锁屏”从可操作性.方便性.功能全面性都有了很大的提升,可以让用户方便快捷的进行锁屏操作. 二.主要特色 (1)调用重力传感器,解放电源键.“重力锁屏”软件调用重力传感器,根据用户翻扣手机或手机朝下的运动状态,实现手机的亮.暗屏.解放手机电源键,延长其使用寿命.并且重力感应功能可开可关,用户可根据自己的喜好和习惯进行设置. (2)界面友好.

用swift开发自己的MacOS锁屏软件(3)

前两篇中实现了MacOS端的锁屏软件,现在需要再实现一个移动端的app用来实现和mac的通信,以后的文章可能就会两个项目来回穿插了. 写完MacOS的软件又回来接着写iOS真的是享受,看着堆积如山的各种资料文档,爽啊,那就现在动手开写吧 首先是创建项目,这个没有什么多说的,创建好项目之后,哈哈,再写一个hello world吧. 依然是拖拽一个label和一个button,label刚开始显示的是Hello iOS,然后点击button之后就会显示Hello World了. 这里和macos不一

jQuery仿Android锁屏图案应用插件

<!doctype html> <html> <head> <meta charset="utf-8"> <title>jQuery仿Android锁屏图案应用插件DEMO演示</title> <link href="css/patternLock.css" rel="stylesheet" type="text/css" /> <scr

iScreenLocker 仿IOS苹果锁屏软件,太逼真了。

*软件介绍: iScreenLocker 是 Android 上处理系统通知的新途径,可以让您在锁屏时看到简洁.美观的新通知,并能直接打开它.如果您想看口袋里的手机有什么新通知,只需从口袋中取出,便会简洁明了地自动显示最新通知. *软件截图: *软件下载: 百度云附件:ios_notification.apk *其他: 软件运行4.2以上系统.

锁屏软件项目可行性研究报告

1引言 1 1.1编写目的 1 1.2背景 1 1.3定义 1 1.4参考资料 1 2可行性研究的前提 2 2.1要求 2 2.2目标 2 2.3条件.假定和限制 3 2.4进行可行性研究的方法 3 2.5评价尺度 3 3对现有系统的分析 3 3.1处理流程和数据流程 4 3.2工作负荷 4 3.3费用开支 4 3.4人员 4 3.5设备 4 3.6局限性 4 4所建议的系统 4 4.1对所建议系统的说明 5 4.2处理流程和数据流程 5 4.3改进之处 5 4.4影响 5 4.4.1对设备的影

android 锁屏程序开发

参考http://blog.csdn.net/wdaming1986/article/details/8837023 锁屏程序的步骤如下: 1.替换系统锁屏 2.屏蔽Home键,back键.menu键 3.锁屏程序不出现在最近任务列表中 4.屏幕唤醒时显示锁屏界面 一.替换系统锁屏 调研市场绝大部分锁屏程序,会引导用户关闭系统锁屏.当用户不关闭系统锁屏的时候我们可以将我们自定义的锁屏程序覆盖在系统锁屏程序上,解锁系统锁屏. 具体做法如下: api level 小于13时: mKeyguardMa

android锁屏

(基于framework 目录下) 一.base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java 开机执行到:systemReady()方法,调用  mKeyguardMediator.onSystemReady();开始锁屏 修改是否锁屏 public void systemReady() { if (mKeyguardMediator != null) { try { //自己添加的,一个变量,如果是0,

Android 锁屏监听

package com.example.lockscreenlistenerdemo; public interface LockScreenListener { String Tag="LockScreenListener"; public void onScreenOn(); public void onScreenOff(); public void onUserPresent(); } 做一个监听接口. 监听广播,监听锁屏 解锁  点亮屏幕的Action package com