Как изменить системную тревогу

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

но я получаю выход, но он не обновляется, может кто-нибудь мне помочь.

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(), но службы приложения продолжают работать по мере их запуска в фоновом режиме. Поэтому, чтобы решить вашу проблему, вам нужно пробудить ваше приложение на долю секунды, а затем обновить экран и затем снова заблокируйте экран.