Wir haben eine Launcher-Anwendung, die auf älteren Versionen von Android funktioniert. Wir haben ein Gerät mit Android 5.1 und es treten Probleme auf.Android-Anwendung startet nicht neu beim Navigieren zum Startbildschirm
Wenn Sie in der Anwendung die Zurück-Taste drücken, können Sie auf die Einstellungsseite wechseln. Durch Drücken der Home-Taste wird die Anwendung neu gestartet. Durch Drücken der Zurück-Taste auf anderen Geräten wird auch die Anwendung neu gestartet.
Auf dem neuen Gerät können Sie durch Drücken der Zurück-Taste zur Android-Startseite navigieren. Es startet die Anwendung nicht.
Wir überschreiben Sie die Taste wieder wie so:
@override
public void onBackPressed() {
// Display the password prompt if required
if (PreferencesManager.isPasswordPresent()) {
LeaveApplicationPasswordDialogFragment dialog = LeaveApplicationPasswordDialogFragment.getInstance();
dialog.show(getSupportFragmentManager(), "password");
}
else {
// Prompt whether we are about to leave the app
LeaveApplicationDialogFragment dialog = null;
MyApplication application = (MyApplication)
getApplication();
if (application.isDefaultLauncher()) {
dialog = LeaveApplicationDialogFragment.getInstance("Are you sure you want to leave ** to access the device's settings?");
}
else {
dialog = LeaveApplicationDialogFragment.getInstance("Are you sure you want to leave ***");
}
dialog.show(getFragmentManager(), "leaving");
}
}
im Dialogfragment, akzeptieren wir die Bestätigung und verarbeiten es in etwa so:
public void exitToSettings() {
GUIAndroidTouchBaseActivity.this.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
shutdownOperations();
finish();
}
Per einigen Forschung und andere Threads, ich arbeitete mit unserem Ausgang Methode wie folgt:
public void exitToSettings() {
Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
GUIAndroidTouchBaseActivity.this.startActivity(intent);
shutdownOperations();
finish();
}
Kein Würfel. Gleiches Verhalten.
Was fehlt mir? Gibt es in OS 5.1 etwas, das unseren Launcher außer Kraft setzt? Drücken Sie erneut die Home-Taste, um die App wie erwartet zu starten. Das Navigieren zur Startseite von der Einstellungsseite durch Drücken der Zurück-Taste funktioniert nicht.
Was wir haben funktioniert auf anderen Geräten und Betriebssystemen. Wir hatten kein Problem mit 4.1 und 6.1.
Wir überschreiben auch die Zurück-Taste wie folgt:
@Override
public boolean onKeyDown(int keyCode, KeyEvent KEvent) {
int deviceid = KEvent.getDeviceId();
//Making sure not processing same key again
if (KEvent.getRepeatCount() != 0) {
return true;
}
if (!SettingsOpened) {
int keyaction = KEvent.getAction();
// "Esc" key can not be stooped id diveceid is non zero because it can be back key of android
if (KEvent.getKeyCode() == KeyEvent.KEYCODE_BACK && deviceid != 0) {
return super.onKeyDown(keyCode, KEvent);
}
if (keyaction == KeyEvent.ACTION_DOWN) {
String key = KeyEvent.keyCodeToString(keyCode); //wont work in version 11 or less
if (keyCode != KeyEvent.KEYCODE_ENVELOPE) {
Matcher matcher = KEYCODE_PATTERN.matcher(key);
if (matcher.matches() || ExternalKeyboard.keyMatches(KEvent)) {
int keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState());
char character = (char) keyunicode;
//toast.makeText(this, "onKeyDown" + _lastChar + repeatcount, toast.LENGTH_SHORT).show();
_lastChar = character;
_actionDown = true;
ExternalKeyboard.KeyboardAddChar(character);
}
}
}
return true;
}
else {
return super.onKeyDown(keyCode, KEvent);
}
}
Dank!
Vielleicht versuchen onkeyDown auch für KeyEvent.KEYCODE_BACK? –
Wir sind bereits: – Ken
Ich habe festgestellt, dass das Hinzufügen von android: clearTaskOnLaunch = "false" zum Manifest bewirkt, dass die App beim Navigieren zurück nach Hause gestartet wird. Unglücklicherweise scheint es auf einem schwarzen Bildschirm für unterschiedliche Zeitspannen und manchmal auf unbestimmte Zeit zu "hängen". – Ken