Android编程实现一键锁屏的方法
程序员文章站
2023-12-11 14:56:46
本文实例讲述了android编程实现一键锁屏的方法。分享给大家供大家参考,具体如下:
这里要用到下面两个类:
deviceadminreceiver 设备管理组件。这个...
本文实例讲述了android编程实现一键锁屏的方法。分享给大家供大家参考,具体如下:
这里要用到下面两个类:
deviceadminreceiver 设备管理组件。这个类提供了一个方便解释由系统发出的意图的动作。你的设备管理应用程序必须包含一个deviceadminreceiver的子类。本程序中,就代表一个手机上的设备管理器.
devicepolicymanager 一个管理设备上规范的类。 大多数客户端必须声明一个用户当前已经启用的deviceadminreceiver。 这个devicepolicymanager为一个或者多个deviceadminreceiver实例管理这些规范。
devicepolicymanager 的实例有个方法叫locknow可以直接锁定屏幕.但是在这之前,需要激活程序中的设备管理器.
下面是主类lockactivity
package com.iceman.test; 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; public class lockactivity extends activity { private devicepolicymanager policymanager; private componentname componentname; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } public void lockscreen(view v){ policymanager = (devicepolicymanager) getsystemservice(context.device_policy_service); componentname = new componentname(this, lockreceiver.class); if (policymanager.isadminactive(componentname)) {//判断是否有权限(激活了设备管理器) policymanager.locknow();// 直接锁屏 android.os.process.killprocess(android.os.process.mypid()); }else{ activemanager();//激活设备管理器获取权限 } } // 解除绑定 public void bind(view v){ if(componentname!=null){ policymanager.removeactiveadmin(componentname); activemanager(); } } @override protected void onresume() {//重写此方法用来在第一次激活设备管理器之后锁定屏幕 if (policymanager!=null && policymanager.isadminactive(componentname)) { policymanager.locknow(); android.os.process.killprocess(android.os.process.mypid()); } super.onresume(); } private void activemanager() { //使用隐式意图调用系统方法来激活指定的设备管理器 intent intent = new intent(devicepolicymanager.action_add_device_admin); intent.putextra(devicepolicymanager.extra_device_admin, componentname); intent.putextra(devicepolicymanager.extra_add_explanation, "一键锁屏"); startactivity(intent); } }
下面是设备管理器类lockreceiver,这是一个继承自deviceadminreceiver的类,可以接收到激活/接触激活的广播,进行下一步操作,本程序中,只是简单打印一下信息.
import android.app.admin.deviceadminreceiver; import android.content.context; import android.content.intent; public class lockreceiver extends deviceadminreceiver{ @override public void onreceive(context context, intent intent) { super.onreceive(context, intent); system.out.println("onreceiver"); } @override public void onenabled(context context, intent intent) { system.out.println("激活使用"); super.onenabled(context, intent); } @override public void ondisabled(context context, intent intent) { system.out.println("取消激活"); super.ondisabled(context, intent); } }
主配置文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.iceman.test" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="9" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".lockactivity" android:label="@string/app_name" android:theme="@android:style/theme.translucent" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <receiver android:name=".lockreceiver" android:description="@string/app_name" android:label="@string/app_name" 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>
其中lock_screen是设备管理器的权限声明,需要在res/xml目录下以xml文件形式定义
<?xml version="1.0" encoding="utf-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android" > <uses-policies> <!-- 锁定屏幕 --> <force-lock /> </uses-policies> </device-admin>
ok.现在自己也可以做一键锁屏了.不用去网上找各种各样带广告带推送的了.
希望本文所述对大家android程序设计有所帮助。