推荐安卓开发神器(里面有各种UI特效和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://www.apache.org/licenses/LICENSE-2.0
- **
- ** Unless required by applicable law or agreed to in writing, software
- ** distributed under the License is distributed on an "AS IS" BASIS,
- ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ** See the License for the specific language governing permissions and
- ** limitations under the License.
- */
- package android.app.admin;
- import android.content.ComponentName;
- /**
- * Internal IPC interface to the device policy service.
- * {@hide}
- */
- interface IDevicePolicyManager {
- void setPasswordQuality(in ComponentName who, int quality);
- int getPasswordQuality(in ComponentName who);
- void setPasswordMinimumLength(in ComponentName who, int length);
- int getPasswordMinimumLength(in ComponentName who);
- boolean isActivePasswordSufficient();
- int getCurrentFailedPasswordAttempts();
- void setMaximumFailedPasswordsForWipe(in ComponentName admin, int num);
- int getMaximumFailedPasswordsForWipe(in ComponentName admin);
- boolean resetPassword(String password, int flags);
- void setMaximumTimeToLock(in ComponentName who, long timeMs);
- long getMaximumTimeToLock(in ComponentName who);
- void lockNow();
- void wipeData(int flags);
- void setActiveAdmin(in ComponentName policyReceiver);
- boolean isAdminActive(in ComponentName policyReceiver);
- List<ComponentName> getActiveAdmins();
- boolean packageHasActiveAdmins(String packageName);
- void removeActiveAdmin(in ComponentName policyReceiver);
- void setActivePasswordState(int quality, int length);
- void reportFailedPasswordAttempt();
- void reportSuccessfulPasswordAttempt();
- }
相关推荐
在Android系统中,调用隐藏服务来实现锁屏和设置默认锁屏密码涉及到对Android框架层及安全机制的深入理解。下面将详细讲解这个过程涉及的知识点。 首先,Android系统是一个基于Linux内核的开源移动操作系统,它允许...
本文实例讲述了Android编程获取系统隐藏服务实现锁屏的方法。分享给大家供大家参考,具体如下: 实现原理:当按锁屏键时,会发出一个广播,当界面接收到一个广播就可以实现锁频。我们可以调用IDevicePolicyManager...
在Android开发中,实现一个能够全屏显示并覆盖导航栏和状态栏的悬浮窗,以及在锁屏页面依然保持全屏显示,是一项涉及到系统权限、窗口管理服务和自定义视图的技术挑战。以下是对这个主题的详细解释: 1. **悬浮窗...
在深入探讨Android系统中锁屏与解锁模块的工作原理之前,我们先来了解一下这些概念的基本背景。Android操作系统作为全球最广泛使用的移动设备操作系统之一,其用户界面(UI)设计和用户体验(UX)优化一直是开发者...
在创建锁屏页面时,我们需要重写Activity的生命周期方法,以便在适当的时候显示和隐藏锁屏界面。 2. **主题(Theme)设置** 为了使锁屏界面看起来更像系统原生,通常需要自定义Activity的主题。例如,可以将`...
本教程将深入探讨如何在Android中实现自启动的锁屏以及屏蔽系统默认锁屏功能。 一、Android锁屏机制 Android锁屏的基本功能包括密码锁、图案锁、指纹锁等,它们都是通过Android的安全框架实现的。安全框架提供了...
通过这个"Android锁屏悬浮demo",开发者可以学习到如何在Android环境中实现锁屏悬浮窗,以及与之相关的权限管理、服务、广播接收器和用户交互等核心概念。实际开发时,需要根据具体需求进行调整和优化,以提供最佳的...
在实现智能UI锁屏时,开发者通常会利用Android提供的API和框架,如壁纸服务(WallpaperService)、通知管理(NotificationManager)等,来实现动态壁纸、通知显示等功能。同时,可能还需要与其他系统服务进行深度...
1. **BroadcastReceiver**: 在Android系统中,实现一键锁屏通常需要创建一个`BroadcastReceiver`,监听电源键或者其他自定义按键事件。当接收到特定事件时,BroadcastReceiver会执行锁屏操作。 2. **PowerManager**...
总结,"一键锁屏OneKeyLockScreen"是一个实用的Android应用示例,它揭示了Android锁屏机制的实现原理,对于希望深入了解Android系统和服务开发的开发者来说,是一个值得研究的项目。通过学习其源码,开发者不仅能...
悬浮窗的实现通常涉及到Android系统的WindowManager服务,开发者需要获取相应的权限并在代码中设置窗口属性,如LayoutParams,来让窗口浮动并调整其大小和位置。 接着,我们来看看“锁屏”。锁屏是移动设备的一种...
在Android系统中,实现一键锁屏通常涉及到以下几个关键知识点: 1. **BroadcastReceiver**:为了实现一键锁屏,我们需要创建一个BroadcastReceiver来监听特定的系统广播,比如电源键的按下事件。当收到这个广播时,...
总的来说,"android-应用管理器的设计与实现"涵盖了Android开发中的多个重要领域,包括系统服务的使用、Intent机制、权限管理、安全机制、输入系统的控制以及UI交互等。开发者需要具备扎实的Android基础知识,才能...
下面将详细探讨这两个功能的实现及其在Android系统中的工作原理。 首先,让我们关注锁屏操作。在Android平台上,锁屏不仅是设备的基本安全机制,也是用户隐私的第一道防线。实现自定义锁屏功能通常涉及以下几个步骤...
### Android完美锁屏知识点解析 #### 一、程序概述 - **名称**:“Android完美锁屏” - **开发者**:IF小组(成员包括付凌健、吴炜) - **功能定位**:本程序专为Android手机平台设计,旨在提供一个全新的解锁界面...
2. **LockService**: 实现自定义锁屏逻辑,包括解锁验证、显示和隐藏界面等。 3. **Resources**: 包含布局文件(XML)、图像资源和字符串资源,用于构建和美化锁屏界面。 4. **AndroidManifest.xml**: 配置应用权限...
实现一键锁屏功能可能需要声明特定权限,如`android.permission.WAKE_LOCK`用于获取和释放`WakeLock`,以及`android.permission.DEVICE_POWER`用于直接控制设备电源。 6. **Activity和Service**: 一键锁屏功能...
"搜索键锁屏"是一个与Android操作系统相关的主题,主要涉及到手机或平板电脑的自定义功能设置,特别是如何利用搜索键来实现快速锁定屏幕。在Android系统中,用户可以通过各种方式来定制设备,以提高操作效率和个性化...