2

私はイベント アプリケーションを作成しており、ユーザーは必要なイベントのリマインダーを設定できます。そこで、alarmManager を使用してアラームを作成します。アプリケーションによって作成されたすべてのアラームをキャンセルできるように、メイン アクティビティにすべてキャンセル オプションを追加したいと考えています。同じ目的でアラームをキャンセルする通常の方法は、アラームをキャンセルしたいアクティビティとは異なるアクティビティに設定するため、実際には役に立ちません。アプリケーションによって作成されたすべてのアラームをキャンセルする方法はありますか? ありがとう!

4

1 に答える 1

2

キャンセルを実行するコードは、アラームの発信元である必要はありません。コードは、アラームを作成した PendingIntent を特定することで、キャンセルするアラームを特定します。次のようにして、オリジナルの複製を「製造」できPendingIntentます。. .

   String pname = this.getPackageName();

   // manufacture an appropriate context
   Context mycontext = null;
   try {
      mycontext = createPackageContext(pname,CONTEXT_IGNORE_SECURITY);
   } catch (NameNotFoundException e) {
      // handle exception here
      e.printStackTrace();
   }
   // and generate a pendingintent
   PendingIntent pi = PendingIntent.getService(mycontext,
                    0, new Intent(mycontext, myalarmreceiver.class), 0);
   // Now use alarmmanager to terminate the alarm
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
   am.cancel(pi);

これはあなたの状況ではうまくいかないかもしれませんが、このアプローチを試したことがない場合は、始めるのに適した場所かもしれません!

于 2010-06-29T03:11:14.223 に答える