0

PendingIntent使用される があります。 には、追跡している一意の ID がありますAlarmManager 。このため、キャンセルしようとすると、一意の ID を渡すPendingIntentことでキャンセルできるはずです。違いがある場合は、作成したものとPendingIntentは別のものでキャンセルしようとしています。Fragment

しかし、過去の質問をいろいろ見てもキャンセルできません。

私は例えばを見てまし:

これは私が作成し、PendingIntentで設定する方法ですAlarmManager

// remCounter is unique for each PendingIntent

Intent remIntent = new Intent();
                remIntent.setAction("com.example.test.remBroadcast");
                Bundle extras = new Bundle();
                extras.putString("content_title", (String) s_content_title);
                extras.putString("content_text", (String) s_content_text);
                extras.putBoolean("bOngoing", boolean_ongoing);
                extras.putInt("remCounter", remCounter); // This is how I keep track of the unique id. I have proved this to work.
                remIntent.putExtras(extras);


                PendingIntent remPendingIntent = PendingIntent.getBroadcast(
                        getActivity(), remCounter, remIntent, 

                        PendingIntent.FLAG_ONE_SHOT);

                getActivity(); // (Do I need this?)
                AlarmManager remAlarmManager = (AlarmManager) getActivity()
                        .getSystemService(Context.ALARM_SERVICE);
                remAlarmManager.set(AlarmManager.RTC_WAKEUP,
                        setForCal,
                        remPendingIntent);

これは、PendingIntent をキャンセルしようとしている方法です。

// cancelCounter is the value of the unique id of the PendingIntent I want to cancel

    Intent intent = new Intent();
        PendingIntent pi = PendingIntent.getBroadcast(getActivity(),
                cancelCounter, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        pi.cancel();
        AlarmManager am = (AlarmManager) getActivity()
                .getSystemService(Context.ALARM_SERVICE);

        am.cancel(pi);
4

0 に答える 0