2 Stimmen

Android Listen Home-Taste

Ist es möglich, die Home-Taste eindeutig abzuhören, wenn die Anwendung eine Standardeinstellung enthält? Ich habe die Lebenszyklusmethode überprüft, aber sie wird ausgeführt, wenn ich die Standardabsicht und die Home-Taste starte.

6voto

Varun Punkte 33357

Eine Aktivität kann mehr als einen Intent-Filter haben. Fügen Sie also im Manifest einen weiteren Intent-Filter wie diesen hinzu, um auf die Home-Taste zu hören.

<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>

Versuchen Sie dies und lassen Sie es mich wissen

1voto

Alex Punkte 9066

wenn der Benutzer die Home-Taste drückt und den Vorgang wieder aufnimmt, muss ich dbsycing durchführen - Sudeep SR 6. Dezember '10 um 12:45

Es klingt, als wollten Sie die onStop- oder onStart-Methoden Ihrer Aktivität überschreiben. Es gibt noch andere Dinge als die Home-Taste, die dazu führen können, dass Ihre Anwendung beendet (in den Hintergrund gestellt) wird. Die Schaltfläche "Zurück", die Kamerataste, ein eingehender Anruf, die Auswahl eines Elements in der Pulldown-Benachrichtigungsleiste. Ich glaube nicht, dass Sie sich nur auf den Fall des Beendens der Home-Taste verlassen wollen. Hier ist der Link zum Aktivitätslebenszyklus, der in solchen Situationen immer gut zu gebrauchen ist: http://developer.Android.com/guide/topics/fundamentals.html#actlife

0voto

EliSherer Punkte 1449

Sie können dies mit einem globalen statischen booleschen Flag tun, das Ihnen sagt, ob das Beenden der Aktivität beabsichtigt war. Sie müssen dieses Flag in jeder "Beendigungs"-Prozedur setzen. (Exit-Prozeduren / Zurück-Taste gedrückt). Hier ist ein Beispiel:

 /**
 *  Home Event
 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        StaticClass.exitFlag = true;
        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
public void onUserLeaveHint() { // not executed when answering a call
    if (StaticClass.exitFlag)
        StaticClass.exitFlag = false;
    else
        // Home was pressed!!!
    super.onUserLeaveHint();
}
/**
 *  End Home Event
 */

Auf diese Weise haben Sie die Kontrolle darüber, wann und wie Sie die Aktivität beenden. Es gibt nur zwei Möglichkeiten, wie die Aktivität ohne Ihr Wissen verschwinden kann und zwar durch Beantwortung eines Anrufs oder durch Drücken von Home. In diesem Beispiel wird die Möglichkeit, einen Anruf entgegenzunehmen, durch das Ereignis onUserLeaveHint() eliminiert!

Viel Glück!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X