ロック画面を無効にし、ロック画面の種類を「なし」に設定する必要があります。私のデバイスはルート化されています(SU権限で実行できます)+システム権限を持つシステムアプリケーションとして実行できます(/ system/appの下)。
私は役に立たないいくつかのことを試みました。
1を試す
これは非推奨であり、機能していないようです。
_KeyguardManager manager = (KeyguardManager) this.getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard();
_
2を試す
これもうまくいきませんでした。
/data/data/com.Android.providers.settings/databases/settings.db
_次のSQLを実行します。
INSERT OR REPLACE INTO system (name, value) VALUES ('lockscreen.disabled', '1');
INSERT OR REPLACE INTO secure (name, value) VALUES ('lockscreen.disabled', '1');
を試す
マシンを再起動しましたが、それでも運がありません。
_Android.provider.Settings.Secure.putLong(mContentResolver, Settings.Secure.LOCK_PATTERN_ENABLED, false);`
Android.provider.Settings.Secure.putLong(mContentResolver, "lockscreen.password_type", DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);`
Android.provider.Settings.Secure.putLong(mContentResolver, "lockscreen.password_type_alternate", DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
Android.provider.Settings.Secure.putLong(mContentResolver, "lockscreen.disabled", true);
_
他に試すことができるものはありますか?
注意してくださいアプリケーションの実行中にのみキーガードを無効にしたくない
あなたはこれを試すことができます:
adb Shell sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '1' WHERE name = 'lockscreen.disabled'"
adb Shell sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '0' WHERE name = 'lockscreen.password_type'"
adb Shell sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '0' WHERE name = 'lockscreen.password_type_alternate'"
それは私の根付いたネクサス4で動作します。
Android source で少し検索した後、クラスonPreferenceTreeClick
から ChooseLockGeneric
という関数内に固執します。ロック解除方法が選択されます(設定で)。
そのメソッドでは updateUnlockMethodAndFinish
が呼び出され、ロック解除メソッドが設定されます。したがって、updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED,true);
を呼び出すことは、まさにあなたが望むものである可能性があります。
これがあなたのニーズに合っているかどうか、そしてこれが機能するかどうかはわかりません(可視性の問題やセキュリティメカニズムがあるかもしれません)。私はただ推測しています。
編集:これはまた役立つかもしれません: startFragment(this,"com.Android.settings.ChooseLockGeneric$ChooseLockGenericFragment",SET_OR_CHANGE_LOCK_METHOD_REQUEST, null);
@ByteHamsterによって提案されたように/data/system/locksettings.dbを変更しようとしましたが、うまくいきませんでした。
adb Shell sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '1' WHERE name = 'lockscreen.disabled'"
次に、locksettings.db
の名前をlocksettings.db.old
に変更し、再起動しました。ロック画面がなくなり、Android locksettings.db
ファイル自体が再構築されました。
私はサムスンギャラクシーS4で TWRPリカバリ を使用しています。
この使用を宣言する必要があります-AndroidManifestの許可:
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
そしてあなたのコードでは:
PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
以下を使用してこのロックを解除するためにアプリケーションが破棄または一時停止された場合:
wakeLock.release();
私はあなたの活動のonResume()内でacquireを呼び出し、onPause()でreleaseを呼び出すことを提案しました。
使用する adb Shell locksettings clear --old xxxx
ロック画面のロックを即座に解除するには(電話がロック状態の場合でも)xxxx
はパターン番号です。下の画像を参照してください。例:locksettings clear --old 1236
パターンを再度設定するには、次を使用します。locksettings set-pattern 1236
使用法:
locksettings set-pattern [--old OLD_CREDENTIAL] NEW_PATTERN
locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN
locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD
locksettings clear [--old OLD_CREDENTIAL]
locksettings verify [--old OLD_CREDENTIAL]
locksettings set-disabled DISABLED
locksettings get-disabled
探求したい exilit 答え。ソースから、私たちはついにこれに入ります:
mChooseLockSettingsHelper.utils().clearLock(false);
mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled);
Utilsはcom.Android.internal.widget.LockPatternUtils
オブジェクトと私たちはどういうわけか反射によってそれを得ることができます。コードは次のとおりです。
try{
Class lockPatternUtilsCls = Class.forName("com.Android.internal.widget.LockPatternUtils");
Constructor lockPatternUtilsConstructor =
lockPatternUtilsCls.getConstructor(new Class[]{Context.class});
Object lockPatternUtils = lockPatternUtilsConstructor.newInstance(MyActivity.this);
Method clearLockMethod = lockPatternUtils.getClass().getMethod("clearLock", boolean.class);
Method setLockScreenDisabledMethod = lockPatternUtils.getClass().getMethod("setLockScreenDisabled", boolean.class);
clearLockMethod.invoke(lockPatternUtils, false);
setLockScreenDisabledMethod.invoke(lockPatternUtils, true);
Log.d(TAG, "set lock screen to NONE SUC");
}catch(Exception e){
Log.e(TAG, "set lock screen to NONE failed", e);
}
私のテストアプリは、プラットフォームキーとシステムアプリで署名されています。必見だと思います。
更新:メソッドの引数がAndroid 6で変更されていることに気づきました。
私はルートタブレットで達成しました、
以下は私の完全な手順です
adbプッシュsqlite3/sdcard/sqlite3
adbシェル
su
mount -o remount、rw/system
cp/sdcard/sqlite3/system/xbin/sqlite3
chmod 755/system/xbin/sqlite3
mount -o remount、ro/system
adbシェルsqlite3/data/system/locksettings.db
UPDATEロック設定SET値= '1' WHERE name = 'lockscreen.disabled'
ファイルは http://www.digitechhub.com/sqlite からダウンロードできます。