2017-06-29 4 views
0

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!

+0

Vielleicht versuchen onkeyDown auch für KeyEvent.KEYCODE_BACK? –

+0

Wir sind bereits: – Ken

+0

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

Antwort

0

Hinzufügen android: stateNotNeeded = "true" android: clearTaskOnLaunch = "false" mein Manifest darum gekümmert.

Verwandte Themen