studio - hide status bar android xml




Chiama il metodo quando viene premuto il pulsante Home (6)

Ho anche faticato con il pulsante HOME per un po '. Volevo interrompere / saltare un servizio in background (che esegue il polling della posizione) quando l'utente fa clic sul pulsante HOME.

ecco cosa ho implementato come soluzione "hack-like";

mantenere lo stato dell'app su SharedPreferences usando il valore booleano

su ogni attività

onResume () -> imposta appattivo = vero

onPause () -> set appactive = false

e il servizio in background controlla l'appstate in ogni ciclo, salta l'azione

SE appactive = false

funziona bene per me, almeno non scaricare la batteria più, spero che questo aiuti ....

Ho questo metodo in una delle mie attività Android:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if(keyCode == KeyEvent.KEYCODE_BACK)
    {
        Log.d("Test", "Back button pressed!");
    }
    else if(keyCode == KeyEvent.KEYCODE_HOME)
    {
        Log.d("Test", "Home button pressed!");
    }
    return super.onKeyDown(keyCode, event);
}

Tuttavia, anche se KEYCODE_HOME è valido, il metodo di registrazione non viene mai attivato. Questo funziona comunque per il pulsante Indietro. Qualcuno sa perché questo è e come farlo funzionare?


Ho scoperto che quando preme il pulsante HOME viene chiamato il metodo onStop (). È possibile utilizzare il seguente pezzo di codice per monitorarlo:

@Override
    protected void onStop() 
    {
        super.onStop();
        Log.d(tag, "MYonStop is called");
        // insert here your instructions
    }

Il pulsante HOME non può essere intercettato dalle applicazioni. Questo è un comportamento di progettazione in Android. Il motivo è di impedire alle app dannose di ottenere il controllo del telefono (se l'utente non può premere back o home, potrebbe non essere mai in grado di uscire dall'app). Il pulsante Home è considerato "zona sicura" dell'utente e avvierà sempre l'app home configurata dell'utente.

L'unica eccezione a quanto sopra è qualsiasi app configurata come casa sostitutiva. Il che significa che ha dichiarato quanto segue nel suo AndroidManifest.xml per l'attività pertinente:

<intent-filter>
   <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.HOME" />
   <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Quando si preme il pulsante home, verrà richiamata l'attività onNewIntent su onNewIntent .


Il pulsante Home è un pulsante molto pericoloso da ignorare e, per questo motivo, Android non ti consente di ignorarne il comportamento nello stesso modo in cui esegui il pulsante INDIETRO.

Dai un'occhiata a questa discussion.

Noterai che il pulsante home sembra essere implementato come invocazione intenzionale, quindi finirai per dover aggiungere una categoria intent alla tua attività. Quindi, ogni volta che l'utente torna a casa, l'app apparirà come un'opzione. Dovresti considerare quello che stai cercando di ottenere con il pulsante Home. Se non si desidera sostituire la schermata iniziale predefinita del dispositivo, sarei cauto nel sovraccaricare il pulsante HOME, ma è possibile (per discussioni nel thread precedente).


usa il metodo onPause() per fare ciò che vuoi fare sul pulsante home.


KeyEvent.KEYCODE_HOME NON può essere intercettato.

Sarebbe piuttosto brutto se fosse possibile.

(Modifica) : Ho appena visto la risposta di Nicks, che è perfettamente completa;)





android-sdk-1.6