如何动态更改系统警报设置文本

10

你好,我正在创建一个应用程序来显示来自服务的闹钟计数,并且在我的屏幕锁定时必须更新它。

但是我获取到输出结果,但它没有更新。有谁能帮帮我吗?

这是我的输出结果

这是我用于在锁屏界面显示文本的代码。

 String message ="New alarm :"+ alarmnew.size()+"\n old alarm :"+alarmold.size();
 Settings.System.putString(this.getContentResolver(),
         Settings.System.NEXT_ALARM_FORMATTED, message);

有人可以帮我吗?我在这个问题上卡了两天了。 - Jagan
你能提供一下你运行原始问题代码的内容吗?(意图处理程序,也许?) - tinsukE
@tinsukE,当服务器发送新警报时,我会调用此方法来处理所有新警报。 - Jagan
@tinsukE 当它锁定时,我没有收到任何更新,但是当我解锁并再次锁定时,它已经更新了。我希望在锁屏时能得到更新。 - Jagan
2个回答

1

首先,您需要解锁屏幕,然后更新显示并再次锁定屏幕。您可以使用window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); 和 DevicePolicyManager lockNow() 方法来锁定或解锁屏幕。

实际上,当屏幕锁定时,您的应用程序会进入onPause()状态,但应用程序的服务仍在后台运行。因此,为了解决您的问题,您需要唤醒应用程序一小段时间,然后更新屏幕,然后再次锁定屏幕。


我该如何在编程中使用这个?有任何例子吗? - Jagan

0

大家好,我终于找到了这个问题的答案,感谢@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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接