2

私は薬と予定のアラームに取り組んでいます...アラームを設定すると、後でアラームが鳴ったときにそれらを使用するために追加のデータを入れます.... これは、パブリック クラス AlarmUtil で薬のアラームを設定するコードです。

 private static void setLimitedDurationAlarms(Context ctxt, MedicineClass med)
{
    long ONE_DAY = 86400000;
    AlarmManager mgr = (AlarmManager) ctxt.getSystemService(Context.ALARM_SERVICE);
      // set up the first alarm
    Calendar firstDoseTime = med.getFirstDoseTime();
    // get firstDoseDate
    Calendar firstDoseToday = med.getStartDate();
    // set the time for the first dose for today.
    firstDoseToday.set(Calendar.HOUR_OF_DAY, firstDoseTime.get(Calendar.HOUR_OF_DAY));
    firstDoseToday.set(Calendar.MINUTE, firstDoseTime.get(Calendar.MINUTE));
    Intent i = new Intent(ctxt, OnAlarmReceiver.class);

    i.putExtra("MEDICINE", med.getName());
    i.putExtra("LAST_ALARM", "FALSE");

    PendingIntent pi = PendingIntent.getBroadcast(ctxt, getUniqueID(), i, 0);
    mgr.set(AlarmManager.RTC_WAKEUP, firstDoseToday.getTimeInMillis(), pi);
      ……….
     ……

アラーム受信時…。アラームの追加データを取得して、それが薬用か予約用かを知る必要があります..また、各薬またはアプリの特定のデータを使用してオブジェクトを取得し、通知でその情報を表示する必要があります..次のコード..

public class OnAlarmReceiver extends BroadcastReceiver
{


@Override
public void onReceive(Context ctxt, Intent intent)
{
    Log.d("Alarm", "Alarm OFF! BEEP BEEP BEEP!");

    Bundle data = intent.getExtras();
    String medicine = (String) data.getCharSequence("MEDICNIE");
    String appointment = (String) data.getCharSequence("APPOINTMENT");
    String AppAction = (String) data.getCharSequence("APP_ACTION");

    if (medicine == null)
       // this alarm is not for medicine = for App
    // use "appointment" values to get the appointment object from appointment list
      else
       // this is medicine alarm..
       // use "medicine" value to get the medicine object form medicines list
        …….

問題は、インテントの追加データから取得したすべてのデータが常に null を返すことです!

誰かがこの問題について知っているなら、私はアンドロイドに非常に慣れていないので、最も簡単な方法で私に答えたいと思っています..
助けを待っています.

4

2 に答える 2

0

インテントには 2 つのキーのみを設定します。

  • LAST_ALARM

しかし、未設定のキーを取得しようとします:

  • 予定
  • APP_ACTION
于 2012-04-20T11:56:07.043 に答える
0

医学のスペルを確認してください

設定時:

i.putExtra("MEDICINE", med.getName());

読むとき:

data.getCharSequence("MEDICNIE");

ここで、「MEDICNIE 」は「 MEDICINE」と同じではありません

于 2012-04-20T12:01:48.660 に答える