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

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

废话不说,直接上代码

Main.java(主页面)

 package com.example.wangshibang.screenlock;

 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; /**
* Created by wangshibang on 2016-11-8.
*/
public class Main extends Activity {
private DevicePolicyManager policyManager;//管理和操作设备的API
private ComponentName componentName;//打开其他应用程序中的Activity或服务 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //获取设备管理服务
policyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
//AdminReceiver 继承自 DeviceAdminReceiver
componentName = new ComponentName(this, AdminReceiver.class); //主方法
myLock(); //killMyself ,锁屏之后就立即kill掉我们的Activity,避免资源的浪费
android.os.Process.killProcess(android.os.Process.myPid());
} private void myLock(){
boolean isActive = policyManager.isAdminActive(componentName);
if(!isActive){
//若没有权限就去获取权限
activeManage(); return;
//锁屏
//policyManager.lockNow();
}
else {
policyManager.lockNow();
}
} private void activeManage(){
//启动设备管理(隐式Intent) - 在AndroidManifest.xml中设定相应过滤器
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
//权限列表
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
//描述(additional explanation)
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "----Other Description----");
startActivityForResult(intent, 0);
}
}

AdminReceiver.java

 package com.example.wangshibang.screenlock;

 import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.widget.Toast; /**
* Created by wangshibang on 2016-11-8.
*/
public class AdminReceiver extends DeviceAdminReceiver { public static SharedPreferences getDevicePreference(Context context){
//获取设备存储的数值
return context.getSharedPreferences(DeviceAdminReceiver.class.getName(),0);
} // 密码的特点
public static String PREF_PASSWORD_QUALITY = "password_quality";
// 密码的长度
public static String PREF_PASSWORD_LENGTH = "password_length"; public static String PREF_MAX_FAILED_PW = "max_failed_pw"; void showToast(Context context, CharSequence text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
} @Override
public void onEnabled(Context context, Intent intent) {
// TODO Auto-generated method stub
showToast(context, "设备管理:可用");
} @Override
public void onDisabled(Context context, Intent intent) {
// TODO Auto-generated method stub
showToast(context, "Deactive successful!");
} @Override
public CharSequence onDisableRequested(Context context, Intent intent) {
// TODO Auto-generated method stub
return "Are you sure want to Deactive?";
} @Override
public void onPasswordChanged(Context context, Intent intent) {
// TODO Auto-generated method stub
showToast(context, "设备管理:密码己经改变");
} @Override
public void onPasswordFailed(Context context, Intent intent) {
// TODO Auto-generated method stub
showToast(context, "设备管理:改变密码失败");
} @Override
public void onPasswordSucceeded(Context context, Intent intent) {
// TODO Auto-generated method stub
showToast(context, "设备管理:改变密码成功");
}
}

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wangshibang.screenlock"> <application
android:allowBackup="true"
android:icon="@mipmap/lock"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Main"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 设备管理 -->
<receiver
android:name=".AdminReceiver"
android:label="ScreenLock"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/lock_screen" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application> </manifest>

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

lock_screen.xml

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

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

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

楼主才疏学浅,不喜勿喷

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

Android锁屏软件的更多相关文章

  1. Android 锁屏软件MemoryDebris测试报告

    目 录 项目基本信息 第1章         引言 1.1        编写目的 1.2        项目背景 1.3        参考资料 1.4        术语和缩略语 第2章      ...

  2. android锁屏软件制作

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mingyue_1128/article/details/33726515 转载请标明出处http:/ ...

  3. 自选项目--手机锁屏软件--NABC分析

    N(Need 需求) 关键字:利用碎片时间加强对想记的事物的记忆.备忘.一般来说,锁屏目的大致有三点: 1.保护手机隐私 2.防止误操作手机 3.在不关闭系统软件的情况下节省电量 对于市面上已有的锁屏 ...

  4. android锁屏和finish()后activity生命周期的变化

    之前写了一个一键锁屏软件,有个朋友用了后发现了问题,所以昨天研究了一个activity在锁屏后的生命周期变化.如下: 锁屏分为两个步骤,先是锁定屏幕,再是黑屏 onCreate(在该方法里锁屏)--- ...

  5. win32进阶之路:给锁屏软件增加一个超链接按钮

    前言: windows下一切皆窗口,我们看到的超链接也是窗口,效果图如下: 鼠标放在赵大哥博客园主页和关于软件两个按钮上,按钮上的字体会从绿色变成红色,同时鼠标指针变为手型,点下鼠标左键就会调用默认浏 ...

  6. Android 锁屏状态/锁屏密码等相关

    Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...

  7. [Android] Android 锁屏实现与总结 (三)

    上接: Android 锁屏实现与总结 (二) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 (二) [Andro ...

  8. [Android] Android 锁屏实现与总结 (二)

    上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 ...

  9. [Android] Android 锁屏实现与总结 (一)

    实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...

随机推荐

  1. iOS开发-HTTP请求

    什么是URL?URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URLURL的基本格式: URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// h ...

  2. Vehicle’s communication protocol

    http://www.crecorder.com/techInfo/commuProtocols.jsp COMMUNICATION PROTOCOLS A “communication protoc ...

  3. iOS10适配知识点

    http://ios.jobbole.com/89551/ http://ios.jobbole.com/88982/ 2.隐私数据访问问题 问题出现 现在app能运行了,当我打开相机时突然又cras ...

  4. Java组待开发的任务

    周枫: A.将digital,xylinkWeb修改为支持oracle版,并完成测试工作.准备好实施安装的步骤和每步需要的文件,比如发布的项目,tomcat,jdk,memcached,数据库等,在单 ...

  5. java 正则表达式学习

    一. Java正则表达式 在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂. 因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段. 正则表达式是一种可 ...

  6. 【ASP.NET】C# 将HTML中Table导出到Excel(TableToExcel)

    首先,说下应用场景 就是,把页面呈现的Table 导出到Excel中.其中使用的原理是 前台使用ajax调用aspx后台,传递过去参数值,导出.使用的组件是NPOI. 前台调用: <script ...

  7. Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 莫队算法

    E. XOR and Favorite Number 题目连接: http://www.codeforces.com/contest/617/problem/E Descriptionww.co Bo ...

  8. (转)用AGG实现高质量图形输出(四)

    AGG的字符输出 字符输出,对于AGG来说,这个功能可以处于显示流程的 不同位置.比如字体引擎可直接处于“Scanline Rasterizer”层向渲染器提供已处理完毕的扫描线,也可以处于“Vert ...

  9. Android ListView标题置顶效果实现

    一. 有图有真相     二.实现: 1. 基于ListView分类效果 2. TitleView即标题的处理(创建) 3. 处理TitleView的三种状态 三.源码: 例子下载 实现可以看代码,具 ...

  10. Linux五种IO模型

    http://www.cnblogs.com/renxs/p/3683189.html