2016-04-14 22 views
0

設定 - >セキュリティ - >スクリーンロックの現在の設定を取得する方法はありますか? "None"、 "Slide"、 "PIN"などの設定が可能です。私はそれを変更することに興味はなく、現在のものを知っているだけです。Androidでプログラムで「スクリーンロック」設定を取得

私は「他人」から「なし」と話すことに興味があるので、それもうまくいくでしょう。 API 23の場合はDevicePolicyManager.setKeyguardDisabled()が追加されています。同等のゲッターを探しています。理想的には、API 14以降です。

答えて

0

研究の数日後、私はこれを行う方法がないという結論に至りました。 KeyguardManagerの方法では、NoneSlideの違いを判別できません。 Androidの設定からもこれを照会する方法はありません。

唯一の方法は、画面が消えたときに手動でKeyguardを監視し、30分後に表示されない場合はNoneが設定されていると仮定します。これは明らかに良い考えではありませんが、Androidはロック設定について多くの情報を提供していないようです。

0

DevicePolicyManagerあなたが探しているものではありません。 DevicePolicyManagerは、デバイス管理を使用するアプリを対象としています。

KeyguardManagerを使用して、どのような種類のデバイスロックが有効で、デバイスが現在ロックされているかを判断します。

+0

ありがとうございました。しかし、私はSlideとNoneの違いを伝える必要があり、KeyguardManagerはそれを許可しません(両方とも安全でないと考えています)。他のセキュリティ設定を照会する方法があります(たとえば、この質問:http://stackoverflow.com/a/17261469/2891462)。この設定に似たものはありますか? – user2891462

0

私はLockPatternUtilsクラスで答えを見つけました。私はkotlinで自分のコードを書く、あなたは簡単にJavaコードに転送することができます。

/** 
* 判断手机系统是否关闭了锁屏界面。 
* 如果第三方 ROM 更改了 LockPatternUtil 或者 UserHandle 类,调用此方法可能会抛出异常。 
*/ 
fun isLockScreenDisabled(): Boolean { 
    val lockPatternClass = Class.forName("com.android.internal.widget.LockPatternUtils") 
    val lockPatternObject = lockPatternClass.getConstructor(Context::class.java) 
      .newInstance(applicationContext) 

    val isSecureMethod = lockPatternClass.getMethod("isLockScreenDisabled") 
    var result = true 

    try { 
     result = isSecureMethod.invoke(lockPatternObject) as Boolean 
    } catch (e: IllegalArgumentException) { 

     val userHandleClass = Class.forName("android.os.UserHandle") 
     val myUserIdMethod = userHandleClass.getMethod("myUserId") 
     val userId = myUserIdMethod.invoke(userHandleClass) 

     result = isSecureMethod.invoke(lockPatternClass, userId) as Boolean 
    } 

    return result 
} 

/** 
* 判断手机系统是否启用了密码锁。 
* 在 4.1 系统以下的版本,如果系统 rom 更改了 LockPatternUtil 类可能会抛出异常。 
*/ 
fun isSecure(): Boolean { 
    val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager 
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     keyguardManager.isKeyguardSecure 
    } else { 
     val lockPatternClass = Class.forName("com.android.internal.widget.LockPatternUtils") 
     val lockPatternObject = lockPatternClass.getConstructor(Context::class.java) 
       .newInstance(applicationContext) 

     val isSecureMethod = lockPatternClass.getMethod("isSecure") 
     var result = false 

     try { 
      result = isSecureMethod.invoke(lockPatternObject) as Boolean 
     } catch (e: IllegalArgumentException) { 

      val userHandleClass = Class.forName("android.os.UserHandle") 
      val myUserIdMethod = userHandleClass.getMethod("myUserId") 
      val userId = myUserIdMethod.invoke(userHandleClass) 

      result = isSecureMethod.invoke(lockPatternClass, userId) as Boolean 
     } 

     result 
    } 
} 
関連する問題