2

私のアプリには、ユーザーが複数のリマインダーを設定できる機能があります。しかし問題は、ユーザーがリマインダー A の時間を設定し、リマインダー B の時間を設定した場合、リマインダー B だけが着信を受けることです。これが、リマインダー A が電話を受けないという意図です。一言で言えば、常に1つのリマインダーだけが機能しています。リマインダーの設定とブロードキャストの呼び出しのスニペットを次に示します。

public void setAlarm(int dayValue, int monthValue, int yearValue, int hourValue, int minValue, String message, int pos){

            int ID = 1;
        calendar.set(yearValue, monthValue, dayValue, hourValue, minValue, 0);
        Calendar tempCal = Calendar.getInstance();
        Intent intent = new Intent(context,ReminderNissan.class);

        intent.putExtra("title",message);
        intent.putExtra("note",message);
        intent.putExtra("id", pos);

        Log.d("****Indide set alarm method*****", "PSOITION " + pos);

        if((tempCal.compareTo(calendar)==  -1) || (tempCal.compareTo(calendar)==  0)){
            try{
                db.open();
                db.setAlarm(id.get(pos).toString(), 1);
                db.close();
            }catch(SQLException exp){
                Log.d("SET ALARM OFF SQL EXCEPTION", exp.toString());
            }

            PendingIntent sender = PendingIntent.getBroadcast(context, ID,intent,0);

            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
            //Toast.makeText(context, "*** ALARM SET AT ***  " + pos, Toast.LENGTH_SHORT).show();

        }else{
            try{
                db.open();
                db.setAlarm(id.get(pos).toString(), 0);
                db.close();
            }catch(SQLException exp){
                Log.d("SET ALARM OFF SQL EXCEPTION", exp.toString());
            }
            Toast.makeText(context, "Time Has Alredy Passed. Set proper Time. ", Toast.LENGTH_SHORT).show();
        }
    }
4

2 に答える 2

1

完全にはわかりませんが、アラートをオーバーライドしている可能性があります。

PendingIntent sender = PendingIntent.getBroadcast(context, ID,intent,0);

あなたの場合、ID引数は常に1です。一意のIDにするだけで問題ありません。

于 2013-01-17T08:27:42.290 に答える
0

setAlarm-Method をどこで呼び出しましたか? 同様の方法で機能するアプリがありました。アラームがアクティブになるたびに、キャンセルボタンでアクティビティを開きます。ボタンを押すことで setAlarm-Method を再設定するので、次のアラームに進みます。そうするために、フラグを pendingIntent に設定しました

      PendingIntent sender = PendingIntent.getBroadcast(context, ID,intent,PendingIntent.FLAG_UPDATE_CURRENT );
于 2013-01-17T08:36:59.350 に答える