Aktuelle Activity herausfinden?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von dannywilde, 02.12.2011.

  1. dannywilde, 02.12.2011 #1
    dannywilde

    dannywilde Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    10.03.2011
    Hallo Entwickler,

    folgendes Problem:

    Ich habe eine App mit der man andere Activities starten kann (z.B. mail app).
    Ich möchte eine Funktion schreiben, die nach einer gewissen Zeitspanne die neuen activities schließt und so zu meiner ursprünglichen activity zurückkehrt.

    Also z.B. so:

    myActivity
    (User ruft mail app auf)
    -> mail activity wird gestartet
    (user ruft nachricht auf)
    -> nachricht activity gestartet
    (Nach 10 Minuten soll wieder zur ursprünglichen Activity zurückgekehrt werden.)
    -> nachricht activity.finish
    -> mail activity.finish


    Die Zeitspanne warte ich mit Hilfe eines THREADs ab,

    Code:
    private Runnable myThread = new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (myProgress < 600) {
                    try {
                        myHandle.sendMessage(myHandle.obtainMessage());
                        Thread.sleep(1000);
    
                    } catch (Throwable t) {
                    }
                }            
    
            }
    
            Handler myHandle = new Handler() {
    
                @Override
                public void handleMessage(Message msg) {
                        myProgress = myProgress + 1;
                        if(myProgress >= 600){
                              //// Hier muss die Funktion XXXXX hin
                        }
                    }
                }
            };
        };
    Die Funktion XXXXX muss jetzt prüfen wie die aktuelle Activity heißt, und sie gegebenenfalls schließen. Doch wie finde ich den Namen der Activity, die momentan im Vordergrund ist?

    Gibt es irgendsowas wie getActivity, oder so?


    Vielen Dank für eure Hilfe.
     
  2. dannywilde, 07.12.2011 #2
    dannywilde

    dannywilde Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    10.03.2011
    Leute, I nee help.

    Habe jetzt tagelang rumprobiert mit getApllicationContext() und anderen Methoden, aber ich kriege nichts hin.

    Vielleicht habe ich es oben zu kompliziert formuliert.

    Meine Frage ist einfach:

    Wie kriege ich die Activity, die aktuell im Vordergrund ist?
     
  3. Neeldarax, 07.12.2011 #3
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hi dannywilde,

    ich kenne keine bereitgestellte Funktion dafür, aber du kannst in einer statischen Klasse eine statische Variable mit der aktuellen Activity pflegen.

    Muss halt nur selber die Arbeit machen, dass immer die aktuelle Activity gespeichert wird.

    regards
     
  4. swordi, 07.12.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    dafür muss er aber genau wissen, was der user für externe apps aufgerufen hat.
     
  5. miha, 07.12.2011 #5
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Etwas seltsam was du da vorhast. Lies mal die Dokumentation zum "Activitymanager" - da ist vermutlich das was du brauchst. Benötigt aber extra Permissions.
     
  6. dannywilde, 08.12.2011 #6
    dannywilde

    dannywilde Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    10.03.2011
    @swordi und Neeldarax: Es ist unbekannt, welche apps der User aufgerufen hat. Allerdings ist die Anzahl der apps, die der User aufrufen kann beschränkt. Ich könnte also theoretisch für jede dieser apps eine eigene Funktion schreiben. Trotzdem ist mir nicht klar, wie ich die aktuelle Activity in der statischen Klasse speichern kann?





    @miha: Mit dem ActivityManager probiere ich schon seit Tagen rum. Es gibt auch eine Funktion die als Lösung für meine Zwecke ausreichen würde:
    Code:
    void moveTaskToFront(int taskid, int flags)
    Allerdings steht mir diese Funktion aus unerfindlichen Gründen nicht zur Verfügung!
    Code:
    ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    
    am.moveTaskToFront(taskInfo.get(0).id);
    
    Hier kriege ich die Meldung: "The method moveTaskToFront(int) is undefined for the type ActivityManager"


    SDK ist auf dem neuesten Stand. Die nötige Ppermission ist auch gegeben.
    Code:
        <uses-permission android:name="android.permission.REORDER_TASKS"></uses-permission>
    Woran kann das liegen? Und wie werde ich diesen Fehler los?
     
  7. Kranki, 08.12.2011 #7
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Die Methode steht erst ab API Level 11 zur Verfügung. Vermutlich ist deine minSdkVersion nicht hoch genug.
     
  8. miha, 08.12.2011 #8
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
     
    Zuletzt bearbeitet: 08.12.2011

Diese Seite empfehlen