2011-10-26 5 views
4

私は目覚まし時計のアプリケーションを書いています。ロック画面で次のアラーム時刻が消えないようにする方法は?

Settings.System.putString(context.getContext().getContentResolver(), 
       Settings.System.NEXT_ALARM_FORMATTED, systemAlarmString); 

と通知バーの右側に、システムのアラームアイコンを設定し、この方法: は私のアプリケーションでは、私はロック画面にこの方法を次のアラーム時刻を入れ

Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED"); 
alarmChanged.putExtra("alarmSet", showSystemAlarmIcon); 
context.getContext().sendBroadcast(alarmChanged); 

をと置きます通知ツールバーの通知バーの左側にあるプログラムアイコン

私のプログラムが次のアラーム時刻を設定しても問題ありません。 しかし、プログラムを閉じた後、ロックバーの次のアラーム時刻と通知バーの右側にあるシステムアラームアイコンが消えます。 通知バーの左側にある通知アイコンが消えません。

次のアラームを削除するのは自分のプログラムではないことがわかりました。私は常にロック画面に定数文字列を設定し、常にシステムのアラームアイコンを表示しようとします。それにもかかわらず、ロック画面に空文字列が表示され、システムアラームアイコンが表示されなくなります。

私は他のプログラマもそうしていると思います。しかし、私はそれを検出することはできません。

私のテスト用の電話はSamsung Galaxy Sです。エミュレータではすべて正常に動作しますが、そこには3番目のパートプログラムはありません。

私はこの問題を発見しました。

標準の目覚まし時計は、次のアラーム時刻をクリアすることがあります。 標準の目覚まし時計にはアラームはありませんが、目を覚まして悪いことをする場合があります:)

私の場合、解決策は "android.intent.action.ALARM_CHANGED"インテントを捕まえて次のアラームを復元することですデータは後である。

答えて

0

一部の機能を含む意図でアラームアイコンを設定します。

Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED"); 
    alarmChanged.putExtra("alarmSet", enabled); 
    alarmChanged.putExtra("from", context.getPackageName()); 
    context.sendBroadcast(alarmChanged); 

アクションを受信「alarmSet」は偽であり、あなたが望んでいないさ「からは」(別のアプリトリガーアラームをオフに意味)した場合、
を「android.intent.action.ALARM_CHANGED」
、アラームとアラームをリセットアイコン。

if (action.equals("android.intent.action.ALARM_CHANGED")) { 
     boolean enabled = intent.getBooleanExtra("alarmSet", false); 
     String pkgName = intent.getStringExtra("from"); 

     if (!context.getPackageName().equals(pkgName)) { 
      if (!enabled) { 
       // TODO if enabled alarms exist then reset alarm and alarm icon 
      } 
     } 
    } 
関連する問題