Autore Topic: Chiudere activity da un receiver  (Letto 411 volte)

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Chiudere activity da un receiver
« il: 10 Febbraio 2015, 16:51:02 CET »
0
Salve a tutti.

Ho implementato un semplice codice utilizzando l'Alarmmanager.

In particolare tramite un tasto setto un alarm one shot :
Codice (XML): [Seleziona]
public void oneshot() {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        int interval = 5000;
        /* Set on shot alarm at 5 Seconds from now */
        manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+interval, pendingIntent);
        Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
        /* Starting Second Activity */
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);

    }

Ecco come ho definito il pending intent :
Codice (XML): [Seleziona]
/* Retrieve a PendingIntent that will perform a broadcast */
        Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, 0);

ed il receiver :
Codice (XML): [Seleziona]
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // For our recurring task, we'll just display a message
        Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
    }
}

Nella funzione oneshot lancio una seconda activity dummy. Al termine del conteggio vorrei, oltre al toast, chiudere l'activity dummy e tornare alla main. Purtroppo non ci riesco.  Vi chiedo qualche suggerimento per aiutarmi a capire come fare.

Il problema e' che la seconda Activity non vede il receiver. :-(

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 90
  • Respect: +6
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:Chiudere activity da un receiver
« Risposta #1 il: 02 Marzo 2015, 12:53:41 CET »
0
Scusami ma molto banalmente non puoi lanciare l' activity Main dalla SecondActivity e chiuderla ?


Codice (Java): [Seleziona]
private void startMain(){

 Intent intent = new Intent(this, MainActivity.class);
      startActivity(intent);
finish();

}

Una volta che sei già nella SecondActivity puoi fare quello che vuoi
The code is joy and passion but it has a high degree of suffering

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Re:Chiudere activity da un receiver
« Risposta #2 il: 07 Marzo 2015, 11:48:14 CET »
0
Anche se è un receiver?

Se ho capito bene mi stai suggerendo di tornare alla Main lanciandola con un intent e chiudere il receiver con finish.

Ma posso farlo?

Del tipo :
Codice (Java): [Seleziona]
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // For our recurring task, we'll just display a message
        Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
       startMain()

    }
}
private void startMain(){

 Intent intent = new Intent(this, MainActivity.class);
      startActivity(intent);
finish();

}


Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Chiudere activity da un receiver
« Risposta #3 il: 07 Marzo 2015, 12:11:08 CET »
0
Credo che non ti serva chiamare Finish nel broadcast. O mi sbaglio?

Offline giuseppesorce

  • Utente junior
  • **
  • Post: 90
  • Respect: +6
    • Google+
    • warpmobile_it
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6,Nexus 5,Nexus 4, Galaxy Nexus, Nexus s, Nexus One,Htc Wildfire S, Nexus 7... etc
  • Sistema operativo:
    Ubuntu 14.04
Re:Chiudere activity da un receiver
« Risposta #4 il: 07 Marzo 2015, 14:49:59 CET »
0
No ho detto

>Scusami ma molto banalmente non puoi lanciare l' activity Main dalla SecondActivity e chiuderla ?

Pensavo che fossi già nella seconda Activity.

Tu avevi detto :

>Nella funzione oneshot lancio una seconda activity dummy.

e poi volevi chiuderla e tornare al Main. Io ti ho suggerito che una volta che era nella seconda bastava chiamare il Main e chiudere la seconda
The code is joy and passion but it has a high degree of suffering

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Re:Chiudere activity da un receiver
« Risposta #5 il: 07 Marzo 2015, 21:16:13 CET »
0
Infatti vorrei chiudere la seconda ma solo quando finisco il conteggio. Quando scatta il metodo onReceive. Come dovrei fare? Io sono dentro il broadcast. La seconda activity è ferma in foreground nel metodo onResume. Come dovrei fare?