Das Beenden einer Activity vermeiden...

U

Unicate

Erfahrenes Mitglied
57
Hallo alle zusammen!

Ich habe eine GridView mit ein paar Bildern drauf. Wenn ich nun die SD-Karte am PC mounte, dann soll sich die Activity NICHT schliessen.
Wie verhindere ich das?
 
Kann keiner helfen?

Was ich bisher herausgefunden habe:

Wenn man soetwas realsieren möchte muss man in der Activity einen Broadcastreceiver registrieren, welchem man den richtigen IntentFilter geben muss.

Das habe ich so gelößt:
PHP:
protected void onResume() {
        super.onResume();
        IntentFilter intentFilter = new
        IntentFilter(Intent.ACTION_MEDIA_EJECT);
        intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
        intentFilter.addDataScheme("file");
        intentFilter.addDataAuthority("*", null);
        // registering the receiver
        registerReceiver(_receiver, intentFilter);
    }
    
    protected void onPause() {
        super.onPause();
        unregisterReceiver(_receiver);
    };

    private BroadcastReceiver _receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            
            Debug.e(TAG, "intent: " + intent.getAction());
            if(intent.getAction().equalsIgnoreCase(Intent.ACTION_MEDIA_EJECT)) {
                Debug.e(TAG, "ejecting...");
            } else if(intent.getAction().equalsIgnoreCase(Intent.ACTION_MEDIA_MOUNTED)) {
                initialize();
            }
        }
        
    };

Im receiver der eject-action sollten alle files freigegeben werden, sodass die Karte auf dem PC gemountet werden kann.

Problem ist aber, das die Activity beendet wird bevor der Intent darin ankommt. Was zur Folge hat das onPause eher aufgerufen wird als der Intent ankommt was wiederrum zur Folge hat das der Intent gar nicht mehr ankommen kann.
 
dann ruf unregister halt erst in onDestroy auf..
 
Naja, prinzipiell jast du ja recht, aber wenn onPause aufgerufen wird, dann heisst das ja das die Activity sowieso schon beendet wird. was zur Folge hat, das wenn ich es schaffe auf das EJECT zu reagieren, die Activity sich aber trotzdem schliessen wird.
 
starte deine app einfach neu im broadcastreceiver
 

Ähnliche Themen

D
  • Data2006
Antworten
14
Aufrufe
483
jogimuc
J
M
  • maksimilian
Antworten
15
Aufrufe
1.695
maksimilian
M
B
Antworten
3
Aufrufe
1.305
swa00
swa00
Zurück
Oben Unten