以编程方式将锁屏设置为"无"?

Ran*_*ray 14 java android lockscreen

我要求禁用锁定屏幕并将锁定屏幕类型设置为"无".我的设备已植根(可以使用SU权限运行)+可以作为具有系统权限的系统应用程序运行(在/ system/app下).

我尝试了一些无济于事的事情.

试试1

这似乎已被弃用,不起作用.

KeyguardManager manager = (KeyguardManager) this.getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard(); 
Run Code Online (Sandbox Code Playgroud)

试试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);
Run Code Online (Sandbox Code Playgroud)

还有什么我可以尝试的吗?

请注意,我不想仅在应用程序运行时禁用键盘锁.

sup*_*erb 14

你可以试试这个:

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'"
Run Code Online (Sandbox Code Playgroud)

它适用于我扎根的Nexus 4.

  • 对于`/ data/data/com.android.providers.settings/databases/settings.db`,据说最好使用`adb shell settings put secure lockscreen.disabled 1`来修改数据库.是否有类似的实用程序来修改`locksettings.db`而不是直接sqlite调用? (2认同)

小智 2

您必须在 AndroidManifest 上声明此使用权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)

在你的代码中:

PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
Run Code Online (Sandbox Code Playgroud)

当您的应用程序被销毁或暂停以释放此锁时,请使用以下命令:

wakeLock.release();
Run Code Online (Sandbox Code Playgroud)

我建议在活动的onResume()中调用acquire并在onPause()中调用release