Как сохранить разблокировку по отпечатку пальца после использования lockNow в Android 6.0?

Как сохранить бесшовный эффект разблокировки по отпечатку пальца после использования DevicePolicyManager для выполнения lockNow() в Android 6.0?

Предполагая, что на устройствах со сканером отпечатков пальцев и приложение, вызывающее lockNow(), имеет USES_POLICY_FORCE_LOCK и ему предоставлен статус администратора устройства.

Это документация для функции lockNow():

public void lockNow()

Немедленно заблокируйте устройство, как будто время ожидания блокировки экрана истекло в момент этого вызова.

Администратор вызывающего устройства должен запросить USES_POLICY_FORCE_LOCK, чтобы иметь возможность вызывать этот метод; если это не так, будет выдано исключение безопасности.

Получение статуса администратора устройства и выполнение блокировки просто отлично. Для справки см. этот вопрос SO для подхода Я использовал.

Проблема заключается в том, что после блокировки телефона сканер отпечатков пальцев больше не может плавно разблокировать телефон. Вместо этого сканер отпечатков пальцев предлагает мне ввести резервный PIN-код. Есть ли что-то новое, что мне нужно сделать в Android 6.0, чтобы сохранить эффект разблокировки отпечатков пальцев после выполнения вызова lockNow()?

Я просмотрел все флаги DevicePolicyManager (в документации) и, похоже, он предлагает отключение вещей, а не их включение.

Спасибо!


person Duy Nguyen    schedule 11.11.2015    source источник
comment
Я не уверен, но я думаю, что моя проблема связана с вашей. Я также буду следить за этим stackoverflow.com/questions/33945568/   -  person anandbibek    schedule 28.11.2015


Ответы (2)


Похоже, Google пометил его как работающий по назначению без каких-либо надлежащих объяснений.

https://code.google.com/p/android/issues/detail?id=79735#c110

а также здесь https://code.google.com/p/android/issues/detail?id=191955#c23

Таким образом, в настоящее время у нас нет возможности программно заблокировать экран, сохраняя при этом работу умной блокировки. Еще говорят, что "разработчики используют его неправильно". Не уверен, шутят они или серьезно.

РЕДАКТИРОВАТЬ: некоторые неудовлетворительные объяснения здесь https://code.google.com/p/android/issues/detail?id=79735#c115

person anandbibek    schedule 31.05.2016
comment
Цитируя там ответ "We have looked into the issue you have reported and would like to inform that this is работает, как задумано, из-за того, что разработчики приложений неправильно используют lockNow(). This needs to be handled by the respective app developers for the upcoming release of Android N. " Что я только что прочитал??? - person anandbibek; 31.05.2016
comment
Спасибо! По крайней мере, сотрудник Google в сообщении № 115 от 2 июня 2016 г. в выпуске 79735, на который вы ссылались выше, дал разъяснения относительно того, ПОЧЕМУ они пометили его как работающий по назначению... - person Duy Nguyen; 11.06.2016
comment
По № 116 контраргументы хороши. Подход Google все еще сбивает меня с толку. Они назвали DoS проблемой безопасности. Но забавно то, что в Android повсюду полно таких DoS-возможностей. Например, как работают блокировки и экраны блокировки сторонних приложений, постоянно выводя действие на передний план в бесконечном цикле. - person anandbibek; 11.06.2016

Как указано в этой ссылке: https://code.google.com/p/android/issues/detail?id=79735, похоже, это проблема со смарт-блокировкой, а не только с отпечатком гугла (сканером отпечатков пальцев).

Если вы можете полагаться на привилегии root, вы, вероятно, можете использовать: PowerManager.goToSleep(0);

Без привилегий root похоже, что на сегодняшний день нет лучшего решения.

person e-shfiyut    schedule 11.12.2015