Intereting Posts

Установите блокировку экрана на «Нет» программно?

У меня есть требование отключить экран блокировки и установить тип блокировки на «Нет». Мое устройство подключено (может работать с разрешениями SU) + может запускаться как системное приложение с системными правами (в / system / app).

Я пробовал несколько вещей безрезультатно.

Попробуйте 1

Это кажется устаревшим и не работает.

KeyguardManager manager = (KeyguardManager) this.getSystemService(KEYGUARD_SERVICE); KeyguardLock lock = manager.newKeyguardLock("abc"); lock.disableKeyguard(); 

Попробуйте 2

Это тоже не сработало.

  1. Смонтируйте системный раздел как доступный для записи
  2. Изменить /data/data/com.android.providers.settings/databases/settings.db
  3. Выполните следующий SQL.

    INSERT OR REPLACE INTO system (name, value) VALUES ('lockscreen.disabled', '1');
    INSERT OR REPLACE INTO secure (name, value) VALUES ('lockscreen.disabled', '1');

Попробуйте 3

Перезагрузили машину, но все равно не повезло.

 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); 

Есть ли что-нибудь еще, что я могу попробовать?

Обратите внимание: я не хочу отключать keyguard только тогда, когда приложение запущено.

Solutions Collecting From Web of "Установите блокировку экрана на «Нет» программно?"

Вы можете попробовать следующее:

 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'" 

Он работает на моем укорененном Nexus 4.

После небольшого поиска в источнике android я теперь onPreferenceTreeClick в функцию, называемую onPreferenceTreeClick из класса ChooseLockGeneric который, кажется, ChooseLockGeneric когда выбран метод разблокировки (в настройках).

В этом методе updateUnlockMethodAndFinish который устанавливает метод разблокировки. Поэтому, возможно, вызывается updateUnlockMethodAndFinish(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED,true); Может быть именно то, что вы хотите.

Я не знаю, соответствует ли это вашим потребностям и не знает, работает ли это (возможно, есть проблемы с видимостью или механизмы безопасности). Я просто размышляю.

EDIT: Это также может помочь: startFragment(this,"com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment",SET_OR_CHANGE_LOCK_METHOD_REQUEST, null);

Я пробовал модифицировать /data/system/locksettings.db, как было предложено @ByteHamster, без везения.

 adb shell sqlite3 /data/system/locksettings.db "UPDATE locksettings SET value = '1' WHERE name = 'lockscreen.disabled'" 

Затем я переименовал locksettings.db в locksettings.db.old и перезагрузился. locksettings.db исчез, и Android перестроил locksettings.db файл locksettings.db .

Я использую восстановление TWRP на Samsung Galaxy S4.

Вы должны объявить это использование – разрешение на 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 () вашей деятельности и выпуск в onPause () .

Я хотел бы изучить 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); } 

Ну, мое тестовое приложение подписано с ключом платформы и системным приложением. Я думаю, что это будет необходимо.

Я получил в корневом планшете,

Ниже приведена моя полная процедура

Adb push sqlite3 / sdcard / sqlite3

Adb shell

су

Mount -o remount, rw / system

Cp / sdcard / sqlite3 / system / xbin / sqlite3

Chmod 755 / system / xbin / sqlite3

Mount -o remount, ro / system

Adb shell sqlite3 /data/system/locksettings.db

UPDATE locksettings SET value = '1' WHERE name = 'lockscreen.disabled'

Вы можете скачать файл с http://www.digitechhub.com/sqlite3