Как изменить системную тревогу
Привет, я создаю приложение для отображения количества сигналов тревоги, поступающих от служб, и я должен обновить это, когда мой экран заблокирован.
но я получаю выход, но он не обновляется, может кто-нибудь мне помочь.
![this is my output]()
это код, который я использовал для отображения текста в экране блокировки
String message ="New alarm :"+ alarmnew.size()+"\n old alarm :"+alarmold.size();
Settings.System.putString(this.getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED, message);
Ответы
Ответ 1
Ребята, я наконец нашел ответ на этот вопрос благодаря @dd619 его концепции
используемая мной концепция заключается в том, что сначала мне нужно разблокировать экран, затем обновить дисплей и снова заблокировать экран.
это мое окончательное кодирование для этого приложения
{
Context context= getApplicationContext();
KeyguardManager _guard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock _keyguardLock = _guard.newKeyguardLock("KeyguardLockWrapper");
//to disable
_keyguardLock.disableKeyguard();
String message ="New alarm :"+ alarmnew.size()+"\n old alarm :"+alarmold.size();
Settings.System.putString(this.getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED, message);
//to enable
_keyguardLock.reenableKeyguard();
}
Ответ 2
для этого сначала вам нужно разблокировать экран, затем обновить дисплей и снова заблокировать экран. вы можете заблокировать или разблокировать экран, используя window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); и DevicePolicyManager lockNow().
Фактически при блокировке экрана ваше приложение переходит в onPause(), но службы приложения продолжают работать по мере их запуска в фоновом режиме. Поэтому, чтобы решить вашу проблему, вам нужно пробудить ваше приложение на долю секунды, а затем обновить экран и затем снова заблокируйте экран.