¿Cómo detener / cancelar el administrador de alarmas en otra actividad?

Estoy creando alarma en la Actividad A y deteniendo / cancelando en otra Actividad B. He intentado difícilmente pero ninguna suerte, abajo es mi código:

MainAcitivity

public class MainActivity extends Activity { private PendingIntent pendingIntent; private static Context context; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent myIntent = new Intent(this, MyReceiver.class); pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0); AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 12 * 60 * 60, pendingIntent); } //end onCreate } 

Mi receptor

  public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent service1 = new Intent(context, MyAlarmService.class); context.startService(service1); } } 

MyAlarmService

 public class MyAlarmService extends Service { private NotificationManager mManager; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); } @SuppressWarnings("static-access") @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE); Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class); Notification notification = new Notification(R.drawable.ic_launcher,"This is a test message!", System.currentTimeMillis()); intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingNotificationIntent = PendingIntent.getActivity( this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.setLatestEventInfo(this.getApplicationContext(), "AlarmManagerDemo", "This is a test message!", pendingNotificationIntent); mManager.notify(0, notification); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } } 

SiguienteActividad

 public class NextActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intentt = new Intent(this, MyReceiver.class); PendingIntent pintent = PendingIntent.getBroadcast(this, 10, intentt, 0); AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); stopService(intentt); alarm.cancel(pintent); } } 

Manifiesto

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.NextActivity" android:label="Next Screen"> </activity> <service android:name=".MyAlarmService" android:enabled="true" /> <receiver android:name=".MyReceiver"/> </application> </manifest> 

Todavía está disparando la alarma, incapaz de parar / cancelar después de hacer esto.

3 Solutions collect form web for “¿Cómo detener / cancelar el administrador de alarmas en otra actividad?”

Al crear su alarma, utilice este PendingIntent :

 Intent myIntent = new Intent(MainActivity.getAppContext(), MyReceiver.class); pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 10, myIntent,0); 

Cuando intenta cancelarlo, está utilizando este PendingIntent :

 Intent intentt = new Intent(MainActivity.getAppContext(), NextActivity.class); PendingIntent pintent = PendingIntent.getService(this, 10, intentt, 0); 

PendingIntent utilizar el mismo código para crear la PendingIntent cuando desee cancelar la alarma. Use getBroadcast() lugar de getService() y use MyReceiver.class lugar de NextActivity.class .

Además, no es necesario guardar el contexto de la aplicación en MainActivity . Puede quitar todas estas cosas estáticas. Sólo puede utilizar this como el parámetro Context al hacer new Intent(Context, Thing.class)

En lugar de llamar a los métodos como forma estática de la que no se está ejecutando para hacer uso de la tarea LocalBroadcastManager que se utiliza para comunicarse entre dos componentes con el mismo proceso.

Vea el siguiente ejemplo: Programa Android para demostrar BroadCastManager local

OnButton Haga clic en Escribir debajo del código, su trabajo para mí !!!!

  finish(); Intent myIntent = new Intent(getBaseContext(), MyBroadcastReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), alaramid, myIntent, 0); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.cancel(pendingIntent); //Navigate to your Activity Intent ii = new Intent(DisplayReminder.this, MenuActivity.class); ii.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(ii); finish(); 
  • ¿Cómo puede comprobar si la música está reproduciendo utilizando un receptor de difusión?
  • Android detectar Bluetooth desconectar inmediatamente Máximo 2 segundos
  • ¿Es el contexto de la aplicación siempre el mismo sin importar la clase?
  • Cómo obtener el nombre del contacto al recibir SMS
  • ¿Cómo comprobar si Receiver está registrado en Android?
  • Cómo enviar datos a una actividad en ejecución desde Broadcast Receiver,
  • Android - Obtención de contexto de un receptor de difusión onReceive () para enviar a
  • No se puede instanciar el receptor java.lang.ClassNotFoundException
  • BroadcastReceiver recibe varios mensajes idénticos para un evento
  • Cancelar el registro del receptor de radiodifusión registrado a través del manifiesto
  • NotificationManager.cancel (id) no funciona dentro de un receptor de difusión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.