【Android M】获取屏幕锁定的相关信息:“无”,“滑动”,“PIN码”,"图案","密码"

ENV: Android M 6.0.1

import android.os.UserHandle;

import com.android.internal.widget.LockPatternUtils;

import android.app.admin.DevicePolicyManager;

LockPatternUtils mLockPatternUtils = new LockPatternUtils(mContext);

int userId = UserHandle.myUserId();

boolean lockScreenDisabled = mLockPatternUtils.isLockScreenDisabled(userId);

boolean security = mLockPatternUtils.isSecure(userId);

boolean isLockPasswordEnabled = mLockPatternUtils.isLockPasswordEnabled(userId);

boolean isLockPatternEnabled = mLockPatternUtils.isLockPatternEnabled(userId);

final int quality = mLockPatternUtils.getKeyguardStoredPasswordQuality(userId);

Log.d(TAG, "lockScreenDisabled = " + lockScreenDisabled);

Log.d(TAG, "security = " + security);

Log.d(TAG, "isLockPasswordEnabled = " + isLockPasswordEnabled);

Log.d(TAG, "isLockPatternEnabled = " + isLockPatternEnabled);

Log.d(TAG, "quality = " + quality);

switch (quality) {

case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:

case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:

if (mLockPatternUtils.isLockPasswordEnabled(userId)) {

Log.d(TAG, "PIN码 安全模式");

}

break;

case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:

case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:

case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:

if (mLockPatternUtils.isLockPasswordEnabled(userId)) {

Log.d(TAG, "密码 安全模式");

}

break;

case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:

case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:

if (mLockPatternUtils.isLockPatternEnabled(userId)) {

Log.d(TAG, "图案 安全模式");

}

break;

}

打印Log

[email protected]:~$ adb logcat -s LockPatternUtilsHelp

--------- beginning of system

--------- beginning of main

//图案

11-02 14:36:22.721  4896  4896 D LockPatternUtilsHelp: lockScreenDisabled = false

11-02 14:36:22.721  4896  4896 D LockPatternUtilsHelp: security = true

11-02 14:36:22.721  4896  4896 D LockPatternUtilsHelp: isLockPasswordEnabled = false

11-02 14:36:22.721  4896  4896 D LockPatternUtilsHelp: isLockPatternEnabled = true

11-02 14:36:22.722  4896  4896 D LockPatternUtilsHelp: quality = 65536

11-02 14:36:22.722  4896  4896 D LockPatternUtilsHelp: 图案 安全模式

//PIN码

11-02 14:37:34.748  4896  4896 D LockPatternUtilsHelp: lockScreenDisabled = false

11-02 14:37:34.748  4896  4896 D LockPatternUtilsHelp: security = true

11-02 14:37:34.748  4896  4896 D LockPatternUtilsHelp: isLockPasswordEnabled = true

11-02 14:37:34.748  4896  4896 D LockPatternUtilsHelp: isLockPatternEnabled = false

11-02 14:37:34.748  4896  4896 D LockPatternUtilsHelp: quality = 131072

11-02 14:37:34.748  4896  4896 D LockPatternUtilsHelp: PIN码 安全模式

// 密码

11-02 14:38:10.930  4896  4896 D LockPatternUtilsHelp: lockScreenDisabled = false

11-02 14:38:10.930  4896  4896 D LockPatternUtilsHelp: security = true

11-02 14:38:10.930  4896  4896 D LockPatternUtilsHelp: isLockPasswordEnabled = true

11-02 14:38:10.930  4896  4896 D LockPatternUtilsHelp: isLockPatternEnabled = false

11-02 14:38:10.930  4896  4896 D LockPatternUtilsHelp: quality = 327680

11-02 14:38:10.931  4896  4896 D LockPatternUtilsHelp: 密码 安全模式

// 滑动

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: lockScreenDisabled = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: security = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: isLockPasswordEnabled = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: isLockPatternEnabled = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: quality = 0

// 无

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: lockScreenDisabled = true

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: security = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: isLockPasswordEnabled = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: isLockPatternEnabled = false

11-02 14:36:58.968  4896  4896 D LockPatternUtilsHelp: quality = 0

一 如何判断当前锁定方式是否为"无"?

通过LockPatternUtils类的isLockScreenDisabled判断

二 如何判断当前锁定方式是否为"滑动"?

通过LockPatternUtils类的! isSecure方法和! isLockScreenDisabled方法判断

三 如何判断当前锁定方式是否为"安全密码"锁屏?

通过LockPatternUtils类的isSecure方法和getKeyguardStoredPasswordQuality方法判断

PS:LockPatternUtils类为平台内部类,第三方应用层无法获取该类,可考虑通过反射调用亦可考虑其他方式判断

时间: 2024-10-19 00:09:45

【Android M】获取屏幕锁定的相关信息:“无”,“滑动”,“PIN码”,"图案","密码"的相关文章

Android中获取屏幕长宽的方法

package com.kale.screen; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Point; import android.os.Bundle; import android.util.Log; import android.view.Display; public class MainActivity extends Activity {

Android视频播放器屏幕左侧边随手指上下滑动亮度调节变暗变亮原理实现(2):后续改进

?? Android视频播放器屏幕左侧边随手指上下滑动亮度调节变暗变亮原理实现(2):后续改进 附录文章1虽然实现了在屏幕左半边随手指上滑/下滑实现明暗度的调节,但是有一个不完美的地方:当手指在屏幕左半边水平左滑/右滑时候,也一样会触发明暗度的调节.这是不完美的,假设当前的那个view是一个视频播放器view,如果用户的手指在水平方向左滑/右滑,显然,意图是快进/快退,而不是调整明暗度,所以需要对附录文章1的代码改进,实现正确的逻辑.需要改进的地方集中在dispatchTouchEvent,改进

android DisplayMetrics 获取屏幕分辨率

Android 提供DisplayMetircs 类可以很方便的获取分辨率.下面介绍 DisplayMetics 类: Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体. 为了获取DisplayMetrics 成员,首先初始化一个对象如下: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetri

Android中获取应用程序(包)的信息----PackageManager

本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:   第一部分: 获取应用程序的packagename.label.icon等 :             第二部分:获取应用程序的占用大小,包括:缓存大小(cachsize).数据大小(datasize). 每部分都为您准备了简单丰富的实例,您一定不会错过. Android系统为我们提供了很多服务管理的类,包括ActivityManager.Po

Android中获取应用程序(包)的信息-----PackageManager的使用(一)

本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:  第一部分: 获取应用程序的packagename.label.icon等 :             第二部分:获取应用程序的占用大小,包括:缓存大小(cachsize).数据大小(datasize). 每部分都为您准备了简单丰富的实例,您一定不会错过. Android系统为我们提供了很多服务管理的类,包括ActivityManager.Pow

Android中获取应用程序(包)的信息

本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:  第一部分: 获取应用程序的packagename.label.icon等 :             第二部分:获取应用程序的占用大小,包括:缓存大小(cachsize).数据大小(datasize). 每部分都为您准备了简单丰富的实例,您一定不会错过. Android系统为我们提供了很多服务管理的类,包括ActivityManager.Pow

Stat(),Lstat(),Fstat() 获取文件/目录的相关信息

stat 的使用 Linux有个命令,ls -l,效果如下: 这个命令能显示文件的类型.操作权限.硬链接数量.属主.所属组.大小.修改时间.文件名.它是怎么获得这些信息的呢,请看下面的讲解. stat 的基本使用 stat:返回一个与此命 需要包含的头文件: <sys/types.h>,<sys/stat.h>,<unistd.h> 函数原型: int stat(const char *path, struct stat *buf);      int fstat(in

Android 强制获取屏幕方向

最近在做照相机功能,简单的封装系统相机,遇到一个问题就是无法获取屏幕的当前方向导致屏幕旋转之后无法获得正确的方向,所以照片方向不对. 在网上查了一下都是通过windowManager的Display或Configuration的getOrientation方法获取当前屏幕方向.但是问题来了,两种方法要求Activity不能固定方向,且需要系统打开自动旋转才能获取正确的值,否则会返回一个固定值. 搜来搜去也就只有这两种答案,我考虑只能用监听方向传感器来实现了,但是android orientati

一个可以获取linux 系统硬件相关信息的类

<?php  class CServerInfo {     static public function getCpuData($speed = 0.5)     {         if (false === ($prevVal = @file("/proc/stat"))) return false;         $prevVal = implode($prevVal, PHP_EOL);         $prevArr = explode(' ', trim($pr