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

von HOMESCREEN mit ACTION_SCREEN_OFF zurück zur App

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von berndschneider, 20.04.2012.

  1. berndschneider, 20.04.2012 #1
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    19.03.2012
    Hallo Leute!

    ich habe ne LoginApp geschrieben (als Activities NICHT als service) und bei erfolgreichem Login schicke ich den user zum Android Homescreen. Das funktioniert auch soweit.

    if(righPassword){

    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(startMain);
    }

    Nur wenn ich jetzt im HomeScreen bin und den Bildschirm ausschalte, möchte ich dass wieder meine LoginApp startet. Ne Ahnung wie ich das umsetzen kann?
     
  2. swordi, 20.04.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    dann wird ja wieder ACTION_SCREEN_OFF verschickt und du startest deine app

    versteh nicht ganz wo das problem ist ? wenns einmal klappt, klappts es sicher öfters auch oder?
     
  3. berndschneider, 20.04.2012 #3
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    19.03.2012
    Also naja ACTION_SCREEN_OFF und ACTION_SCREEN_ON werden zwar geschickt , aber ich gelange nicht in die View meiner LoginActivity, sondern er bleibt im Homescreen.

    Ich rufe aus der LoginActivity in den onPause() und onResume() Methoden(siehe unten) die Methode im ScreenReceiver onReceive(...) auf. :

    Das hier steht im ScreenReceiver:

    public class ScreenReceiver extends BroadcastReceiver {

    // fixed
    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
    Toast.makeText(context,"AUSGEMACHT", Toast.LENGTH_LONG).show();
    // do whatever you need to do here
    wasScreenOn = false;
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
    Toast.makeText(context, "ANGEMACHT", Toast.LENGTH_LONG).show();
    // and do whatever you need to do here
    wasScreenOn = true;
    /* Intent rausda = new Intent(context, LoginActivityGrid.class);
    context.startActivity(rausda);*/
    }
    }

    }


    hier die onResume und OnPause MEthoden:

    @Override
    protected void onPause() {
    // when the screen is about to turn off
    collected=secret.passwortAuslesen();
    if (ScreenReceiver.wasScreenOn) {
    Intent intent = new Intent(LoginActivityGrid.this,LoginActivityGrid.class );
    startActivity(intent);
    // this is the case when onPause() is called by the system due to a screen state change
    System.out.println("SCREEN TURNED OFF");
    } else {
    // this is when onPause() is called when the screen state has not changed
    }
    super.onPause();
    }


    @Override
    protected void onResume() {
    collected=secret.passwortAuslesen();
    // only when screen turns on
    if (!ScreenReceiver.wasScreenOn) {
    // this is when onResume() is called due to a screen state change

    System.out.println("SCREEN TURNED ON");
    } else {

    // this is when onResume() is called when the screen state has not changed
    }
    super.onResume();
    }
     
    Zuletzt bearbeitet: 20.04.2012
  4. DieGoldeneMitte, 20.04.2012 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Dein Intent ist auskomentiert?!
     
  5. strider, 20.04.2012 #5
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    Da dein BroadcastReceiver über registerReciever() in der App läuft und nicht in einem Service denke ich nicht, dass da etwas ankommt wenn der Homescreen im Vordergrund läuft und die App irgendwo im Hintergrund schläft.
     
    berndschneider bedankt sich.
  6. miha, 20.04.2012 #6
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Mach doch mal Logausgaben überall rein dass du siehst wo er überhaupt hinkommt im Schlaf.
     
    berndschneider bedankt sich.
  7. berndschneider, 20.04.2012 #7
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    19.03.2012
    "Also die strings “ANGEMACHT“ und “AUSGEMACHT“.werden angezeigt durch Toast in onReceive(). ok muss ich also die activity in services umwandeln damit das.funktioniert was ich möchte? momentan komm ich net weiter..."
     
  8. berndschneider, 21.04.2012 #8
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    0
    Registriert seit:
    19.03.2012
    hast du ne idee wie ich das ändere? also ich sehe auch dass onPause() viel zu oft aufgerufen wird, also auch wenn ich den bildschirm einschalte. dann sollte ja eigentlich eh nur onResume() aufgerufen werden.

    Das HAUPTPROBLEM ist aber, dass nachdem ich im homescreen bin und ich den bildschirm ausschalte und wieder einschalte, die view der LoginActivity nicht zu sehen ist. zudem scheint er onCreate auszuführen. ganz komisch!

    eigentlich will ich wenn ich im HOMESCREEN bin und den bildschirm ausschalte und wieder einschalte, dass die view meiner LoginActivity zu sehen ist und man sich einloggen kann.

    Ich habe mir einiges durchglesen service zu starten und von dort die activity aufzurufen, jedoch kein plan...
     

Diese Seite empfehlen