`
407827531
  • 浏览: 1076406 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Android获取系统隐藏服务实现锁屏

 
阅读更多

 

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

实现原理:当按锁屏键时,会发出一个广播,当界面接收到一个广播就可以实现锁频。我们可以调用IDevicePolicyManager服务中的lockNow方法来发送一个广播实现锁屏。

IDevicePolicyManager是被系统隐藏掉的,需要通过反射还获取此服务。

 步骤:

1.创建MyAdmin的广播接收者继承DeviceAdminReceiver

2.通过反射 ,获取IDevicePolicyManager服务 ,IDevicePolicyManager通过AIDL来获取出来。

3.注册广播接收者为admin设备

4.获取服务中的方法

效果图:

    

 

注册MyAdmin广播接收者:

[html] view plaincopy
  1. <receiver android:name=".MyAdmin">  
  2.     <meta-data android:name="android.app.device_admin"  
  3.         android:resource="@xml/my_admin" />  
  4.     <intent-filter>  
  5.         <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />  
  6.     </intent-filter>  
  7. </receiver>  


my_admin.xml:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <device-admin xmlns:android="http://schemas.android.com/apk/res/android">  
  3.         <uses-policies>  
  4.                 <limit-password />  
  5.                 <watch-login />  
  6.                 <reset-password />  
  7.                 <force-lock />  
  8.                 <wipe-data />  
  9.         </uses-policies>  
  10. </device-admin>  

反射获取服务、注册权限、实现锁屏:

[java] view plaincopy
  1. public class LockActivity extends Activity {  
  2.     IDevicePolicyManager mService;  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.     }  
  8.     //锁屏   
  9.     public void lock(View view){  
  10.         try {  
  11.             //通过反射获取到sdk隐藏的服务   
  12.             Method method = Class.forName("android.os.ServiceManager")  
  13.                     .getMethod("getService", String.class);  
  14.             IBinder binder = (IBinder) method.invoke(null,//激活服务  
  15.                     new Object[] { Context.DEVICE_POLICY_SERVICE });  
  16.              mService = IDevicePolicyManager.Stub.asInterface(binder);  
  17.                
  18.              //定义组件的名字   
  19.              ComponentName mAdminName = new ComponentName(this, MyAdmin.class);  
  20.               
  21.              //注册权限  
  22.              if (mService != null) {  
  23.                     //判断自定义的广播接受者 是不是被注册成 deviceadmin的权限   
  24.                     if (!mService.isAdminActive(mAdminName)) {  
  25.                                 Intent intent = new Intent(  
  26.                                 DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);  
  27.                                 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,  
  28.                                         mAdminName);  
  29.                                 startActivity(intent);  
  30.                             }  
  31.                     //调用服务实现锁屏   
  32.                     mService.lockNow();  
  33.                     //设置解锁密码  
  34.                     mService.resetPassword("123"0);  
  35.              }  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.         }   
  39.     }  
  40. }  


AIDL:

[java] view plaincopy
  1. /* 
  2. ** 
  3. ** Copyright 2010, The Android Open Source Project 
  4. ** 
  5. ** Licensed under the Apache License, Version 2.0 (the "License"); 
  6. ** you may not use this file except in compliance with the License. 
  7. ** You may obtain a copy of the License at 
  8. ** 
  9. **     http://www.apache.org/licenses/LICENSE-2.0 
  10. ** 
  11. ** Unless required by applicable law or agreed to in writing, software 
  12. ** distributed under the License is distributed on an "AS IS" BASIS, 
  13. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  14. ** See the License for the specific language governing permissions and 
  15. ** limitations under the License. 
  16. */  
  17.   
  18. package android.app.admin;  
  19.   
  20. import android.content.ComponentName;  
  21. /** 
  22.  * Internal IPC interface to the device policy service. 
  23.  * {@hide} 
  24.  */  
  25. interface IDevicePolicyManager {  
  26.     void setPasswordQuality(in ComponentName who, int quality);  
  27.     int getPasswordQuality(in ComponentName who);  
  28.       
  29.     void setPasswordMinimumLength(in ComponentName who, int length);  
  30.     int getPasswordMinimumLength(in ComponentName who);  
  31.       
  32.     boolean isActivePasswordSufficient();  
  33.     int getCurrentFailedPasswordAttempts();  
  34.       
  35.     void setMaximumFailedPasswordsForWipe(in ComponentName admin, int num);  
  36.     int getMaximumFailedPasswordsForWipe(in ComponentName admin);  
  37.       
  38.     boolean resetPassword(String password, int flags);  
  39.       
  40.     void setMaximumTimeToLock(in ComponentName who, long timeMs);  
  41.     long getMaximumTimeToLock(in ComponentName who);  
  42.       
  43.     void lockNow();  
  44.       
  45.     void wipeData(int flags);  
  46.       
  47.     void setActiveAdmin(in ComponentName policyReceiver);  
  48.     boolean isAdminActive(in ComponentName policyReceiver);  
  49.     List<ComponentName> getActiveAdmins();  
  50.     boolean packageHasActiveAdmins(String packageName);  
  51.     void removeActiveAdmin(in ComponentName policyReceiver);  
  52.       
  53.     void setActivePasswordState(int quality, int length);  
  54.     void reportFailedPasswordAttempt();  
  55.     void reportSuccessfulPasswordAttempt();  
  56. }  
分享到:
评论

相关推荐

    Android调用隐藏系统服务锁屏

    在Android系统中,调用隐藏服务来实现锁屏和设置默认锁屏密码涉及到对Android框架层及安全机制的深入理解。下面将详细讲解这个过程涉及的知识点。 首先,Android系统是一个基于Linux内核的开源移动操作系统,它允许...

    Android编程获取系统隐藏服务实现锁屏的方法

    本文实例讲述了Android编程获取系统隐藏服务实现锁屏的方法。分享给大家供大家参考,具体如下: 实现原理:当按锁屏键时,会发出一个广播,当界面接收到一个广播就可以实现锁频。我们可以调用IDevicePolicyManager...

    android 悬浮窗全屏显示,锁屏页面悬浮窗全屏显示

    在Android开发中,实现一个能够全屏显示并覆盖导航栏和状态栏的悬浮窗,以及在锁屏页面依然保持全屏显示,是一项涉及到系统权限、窗口管理服务和自定义视图的技术挑战。以下是对这个主题的详细解释: 1. **悬浮窗...

    Android待机流程分析---锁屏、解锁模块.

    在深入探讨Android系统中锁屏与解锁模块的工作原理之前,我们先来了解一下这些概念的基本背景。Android操作系统作为全球最广泛使用的移动设备操作系统之一,其用户界面(UI)设计和用户体验(UX)优化一直是开发者...

    Android自定义锁屏页Demo

    在创建锁屏页面时,我们需要重写Activity的生命周期方法,以便在适当的时候显示和隐藏锁屏界面。 2. **主题(Theme)设置** 为了使锁屏界面看起来更像系统原生,通常需要自定义Activity的主题。例如,可以将`...

    Android锁屏

    本教程将深入探讨如何在Android中实现自启动的锁屏以及屏蔽系统默认锁屏功能。 一、Android锁屏机制 Android锁屏的基本功能包括密码锁、图案锁、指纹锁等,它们都是通过Android的安全框架实现的。安全框架提供了...

    Android锁屏悬浮demo

    通过这个"Android锁屏悬浮demo",开发者可以学习到如何在Android环境中实现锁屏悬浮窗,以及与之相关的权限管理、服务、广播接收器和用户交互等核心概念。实际开发时,需要根据具体需求进行调整和优化,以提供最佳的...

    Android 智能UI锁屏

    在实现智能UI锁屏时,开发者通常会利用Android提供的API和框架,如壁纸服务(WallpaperService)、通知管理(NotificationManager)等,来实现动态壁纸、通知显示等功能。同时,可能还需要与其他系统服务进行深度...

    Android 一键锁屏代码

    1. **BroadcastReceiver**: 在Android系统中,实现一键锁屏通常需要创建一个`BroadcastReceiver`,监听电源键或者其他自定义按键事件。当接收到特定事件时,BroadcastReceiver会执行锁屏操作。 2. **PowerManager**...

    一键锁屏OneKeyLockScreen

    总结,"一键锁屏OneKeyLockScreen"是一个实用的Android应用示例,它揭示了Android锁屏机制的实现原理,对于希望深入了解Android系统和服务开发的开发者来说,是一个值得研究的项目。通过学习其源码,开发者不仅能...

    悬浮窗悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏悬浮窗+锁屏

    悬浮窗的实现通常涉及到Android系统的WindowManager服务,开发者需要获取相应的权限并在代码中设置窗口属性,如LayoutParams,来让窗口浮动并调整其大小和位置。 接着,我们来看看“锁屏”。锁屏是移动设备的一种...

    新作的锁屏界面

    在Android系统中,实现一键锁屏通常涉及到以下几个关键知识点: 1. **BroadcastReceiver**:为了实现一键锁屏,我们需要创建一个BroadcastReceiver来监听特定的系统广播,比如电源键的按下事件。当收到这个广播时,...

    android-应用管理器的设计与实现

    总的来说,"android-应用管理器的设计与实现"涵盖了Android开发中的多个重要领域,包括系统服务的使用、Intent机制、权限管理、安全机制、输入系统的控制以及UI交互等。开发者需要具备扎实的Android基础知识,才能...

    Android项目实战--手机卫士11--锁屏操作与恢复出厂模式

    下面将详细探讨这两个功能的实现及其在Android系统中的工作原理。 首先,让我们关注锁屏操作。在Android平台上,锁屏不仅是设备的基本安全机制,也是用户隐私的第一道防线。实现自定义锁屏功能通常涉及以下几个步骤...

    android 完美锁屏

    ### Android完美锁屏知识点解析 #### 一、程序概述 - **名称**:“Android完美锁屏” - **开发者**:IF小组(成员包括付凌健、吴炜) - **功能定位**:本程序专为Android手机平台设计,旨在提供一个全新的解锁界面...

    Android-LockScreen:锁屏定制应用

    2. **LockService**: 实现自定义锁屏逻辑,包括解锁验证、显示和隐藏界面等。 3. **Resources**: 包含布局文件(XML)、图像资源和字符串资源,用于构建和美化锁屏界面。 4. **AndroidManifest.xml**: 配置应用权限...

    一键锁屏Demo

    实现一键锁屏功能可能需要声明特定权限,如`android.permission.WAKE_LOCK`用于获取和释放`WakeLock`,以及`android.permission.DEVICE_POWER`用于直接控制设备电源。 6. **Activity和Service**: 一键锁屏功能...

    搜索键锁屏

    "搜索键锁屏"是一个与Android操作系统相关的主题,主要涉及到手机或平板电脑的自定义功能设置,特别是如何利用搜索键来实现快速锁定屏幕。在Android系统中,用户可以通过各种方式来定制设备,以提高操作效率和个性化...

Global site tag (gtag.js) - Google Analytics