4

PatternLock 画面を一時的に無効にする方法を見つけようとしました。ロックを完全に無効にしたくはありませんが、ユーザーは常にパターンを再入力する必要はありません。

私の考えは、ユーザー アクティビティの後にパターンを無効にし、しばらくしてから再度有効にするサービスを作成することです。(そしてそれ以上)

そのようなことを行うアプリ (AutoLock や TogglePattern など) が市場に出回っているため、解決策が必要です。

以下を使用してロックを完全に防止できることを知っています。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

また

KeyguardLock.disableKeyguard()

しかし、それは私が求めているものではありません。

設定アクティビティで使用される Android ソースのクラスを見ましたcom.android.internal.widget.LockPatternUtilsが、このクラスは (少なくとも私が知る限り) 「通常の」アプリケーションではアクセスできません。

何か提案はありますか?

4

2 に答える 2

4

2.0 (API レベル 5) では、このウィンドウ フラグを使用して、ウィンドウが表示されている間にロック画面が表示されないようにすることができます。

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SHOW_WHEN_LOCKED

このフラグを使用して、ウィンドウが表示されたときに安全でないキーガードを閉じることもできます。

http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DISMISS_KEYGUARD

これらは、意図的な設計上の決定である、アプリケーションの環境外でロック画面をバイパスすることを許可しないことに注意してください。

wake lock と同様の方法でロック画面を非表示にできる古い API もあります。

http://developer.android.com/reference/android/app/KeyguardManager.html#newKeyguardLock(java.lang.String)

新しいプラットフォームでは、この API の使用はお勧めできません。これは、非常に間違いやすく、悪い動作 (ユーザーが期待するときに画面がロックされない) を引き起こしやすく、ロックされていない状態のアクティビティ間でクリーンな移行を行うことは基本的に不可能であるためです。たとえば、これは通話中画面が表示されたときにロック画面を非表示にするために元々使用されていた API ですが、2.0 の時点では、新しいクリーンなウィンドウ フラグに切り替えられています。目覚まし時計なども同様です。

于 2010-02-04T08:49:44.277 に答える
3

のコードを見て、com.android.internal.widget.LockPatternUtilsそれが何をするか試してみましたか?

次のようなものがあります。

public void setLockPatternEnabled(boolean enabled) {
    setBoolean(android.provider.Settings.System.LOCK_PATTERN_ENABLED, enabled);
}

private void setBoolean(String systemSettingKey, boolean enabled) {
    android.provider.Settings.System.putInt(
                    mContentResolver,
                    systemSettingKey,
                    enabled ? 1 : 0);
}

コードで同様のことができる場合があります。

于 2010-02-04T05:08:39.450 に答える