¿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.

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(); 
  • Resultados de escaneo Wifi receptor de difusión no funciona
  • Android: errores de difusión no ordenados con GCM
  • Enviar la emisión con la combinación de localbroadcastmanager sendorderedbroadcast
  • Receptor de difusión de Android y filtro de intenciones
  • ¿Cómo enviar datos a través de PendingIntent a Broadcast?
  • Notificaciones de Android que no se muestran cuando la aplicación se detiene en la configuración
  • ¿Cómo suprimir la notificación push se muestra cuando la aplicación se está ejecutando?
  • ¿Cómo iniciar la actividad después de desbloquear btn presione y antes de desbloquear pantalla aparecen?
  • Iniciar la pantalla Actividad incluso si la pantalla está bloqueada en Android
  • Cómo crear BroadcastReceiver sin actividad
  • Android BroadcastReceiver o método simple de devolución de llamada?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.