1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. berndschneider, 20.04.2012 #1
    berndschneider

    berndschneider Threadstarter Neuer Benutzer

    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

    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

    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

    Dein Intent ist auskomentiert?!
     
  5. strider, 20.04.2012 #5
    strider

    strider Erfahrener Benutzer

    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

    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

    "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

    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