android обнаруживает, что пользователь изменяет время часов устройства

#android #datetime #android-ndk

#Android #дата и время #android-ndk

Вопрос:

Моему приложению требуется правильное время (нельзя полагаться на время устройства, поскольку пользователь может его изменить оператор может быть недоступен или не поддерживает NITZ). Изначально я использую http-вызовы для доверенного сервера, однако бывают ситуации, когда сеть недоступна.

Есть ли какой-либо другой вариант, который я могу использовать?

Могу ли я полагаться на широковещательный ACTION_TIME_CHANGED, чтобы определить, что пользователь изменил часы устройства? Всегда ли мое приложение должно быть запущено, чтобы получить это уведомление (этого я хотел бы избежать)?

Спасибо!

Ответ №1:

Моему приложению требуется правильное время

Никогда не полагайтесь на точное время клиента на любой платформе.

Изначально я использую http-вызовы для доверенного сервера, однако бывают ситуации, когда сеть недоступна.

Тогда у вас не может быть точного времени по определению.

Есть ли какой-либо другой вариант, который я могу использовать?

Вы можете создать свою собственную прошивку, которая не позволяет пользователю устанавливать время.

Могу ли я полагаться на широковещательный ACTION_TIME_CHANGED, чтобы определить, что пользователь изменил часы устройства?

Нет, поскольку существует несколько возможных причин, по которым будет отправлена эта трансляция.

Всегда ли мое приложение должно быть запущено, чтобы получить это уведомление (этого я хотел бы избежать)?

Я могу вам сказать, что единственными получателями ACTION_TIME_CHANGED, которые я вижу в исходном коде Android, являются те, которые регистрируются для него через registerReceiver() , а не в манифесте. Однако эта трансляция не соответствует обычному шаблону, где registerReceiver() это требуется. Вероятно, вам проще просто попробовать.