10

こんにちは、サービスからのアラームの数を表示するアプリを作成しています。画面がロックされたときにそれを更新する必要があります。

しかし、私は出力を得ていますが、それは更新されていません。

これは私の出力です

これは、ロック画面にテキストを表示するために使用したコードです

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

2 に答える 2

1

そのためには、最初に画面のロックを解除してから表示を更新し、再度画面をロックする必要があります。window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);を使用して、画面をロックまたはロック解除できます。および DevicePolicyManager lockNow()メソッド。

実際には、画面がロックされると、アプリケーションは onPause() に移行しますが、アプリケーションのサービスはバックグラウンドで実行されているため、実行を続けます。したがって、問題を解決するには、アプリケーションをほんの数秒間ウェイクアップし、画面を更新してから再度ロックする必要がありますスクリーン。

于 2012-09-13T06:55:15.830 に答える
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();
}
于 2012-09-13T08:17:11.730 に答える