时间:2021-05-20
本文实例讲述了Android编程获取系统隐藏服务实现锁屏的方法。分享给大家供大家参考,具体如下:
实现原理:当按锁屏键时,会发出一个广播,当界面接收到一个广播就可以实现锁频。我们可以调用IDevicePolicyManager服务中的lockNow方法来发送一个广播实现锁屏。
IDevicePolicyManager是被系统隐藏掉的,需要通过反射还获取此服务。
步骤:
1.创建MyAdmin的广播接收者继承DeviceAdminReceiver
2.通过反射 ,获取IDevicePolicyManager服务 ,IDevicePolicyManager通过AIDL来获取出来。
3.注册广播接收者为admin设备
4.获取服务中的方法
效果图:
注册MyAdmin广播接收者:
<receiver android:name=".MyAdmin"> <meta-data android:name="android.app.device_admin" android:resource="@xml/my_admin" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter></receiver>my_admin.xml:
<?xml version="1.0" encoding="utf-8"?><device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> <watch-login /> <reset-password /> <force-lock /> <wipe-data /> </uses-policies></device-admin>反射获取服务、注册权限、实现锁屏:
public class LockActivity extends Activity { IDevicePolicyManager mService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } //锁屏 public void lock(View view){ try { //通过反射获取到sdk隐藏的服务 Method method = Class.forName("android.os.ServiceManager") .getMethod("getService", String.class); IBinder binder = (IBinder) method.invoke(null,//激活服务 new Object[] { Context.DEVICE_POLICY_SERVICE }); mService = IDevicePolicyManager.Stub.asInterface(binder); //定义组件的名字 ComponentName mAdminName = new ComponentName(this, MyAdmin.class); //注册权限 if (mService != null) { //判断自定义的广播接受者 是不是被注册成 deviceadmin的权限 if (!mService.isAdminActive(mAdminName)) { Intent intent = new Intent( DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName); startActivity(intent); } //调用服务实现锁屏 mService.lockNow(); //设置解锁密码 mService.resetPassword("123", 0); } } catch (Exception e) { e.printStackTrace(); } }}AIDL:
/***** Copyright 2010, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License");** you may not use this file except in compliance with the License.** You may obtain a copy of the License at**** http://ponentName policyReceiver); void setActivePasswordState(int quality, int length); void reportFailedPasswordAttempt(); void reportSuccessfulPasswordAttempt();}希望本文所述对大家Android程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android编程实现禁止系统锁屏与解锁亮屏的方法。分享给大家供大家参考,具体如下:需求:某个时刻任务执行完毕,关闭屏幕,某时刻再开启屏幕继续执行
本文实例讲述了Android编程之截屏实现方法。分享给大家供大家参考,具体如下:publicclassScreenShot{//获取指定Activity的截屏,
本文实例讲述了Android编程实现一键锁屏的方法。分享给大家供大家参考,具体如下:这里要用到下面两个类:DeviceAdminReceiver设备管理组件。这
在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android永不锁屏,开机不锁屏,删除设置中休眠时间选项,
三星s10怎么隐藏锁屏通知?还不知道方法的玩家们,下面小编就为大家带来隐藏锁屏通知方法,接着往下看吧三星s10怎么隐藏锁屏通知内容?1、点击【设置】。2、点击【