1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Das Beenden einer Activity vermeiden...

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Unicate, 26.10.2011.

  1. Unicate, 26.10.2011 #1
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    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?
     
  2. Unicate, 27.10.2011 #2
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    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(_receiverintentFilter);
        }
        
        protected 
    void onPause() {
            
    super.onPause();
            
    unregisterReceiver(_receiver);
        };

        private 
    BroadcastReceiver _receiver = new BroadcastReceiver() {
            @
    Override
            
    public void onReceive(Context contextIntent 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.
     
  3. Fr4gg0r, 27.10.2011 #3
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    dann ruf unregister halt erst in onDestroy auf..
     
  4. Unicate, 28.10.2011 #4
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    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.
     
  5. Fr4gg0r, 28.10.2011 #5
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    starte deine app einfach neu im broadcastreceiver
     

Diese Seite empfehlen