2016-03-29 5 views
2

Ich muss eine Genehmigung manuell für API-Ebene 23 anfordern und wo das Dialogfenster erscheint und die Anwendung in den Hintergrund tritt.Anfrage Erlaubnis Fenster Kraftanwendung zu stoppen

Hier ist mein Code:

@Override 
    public void onDialogDone(int dialog, boolean result) { 
     DialogFragment newFragment; 

     switch (dialog) { 
      case EULA_DIALOG: 
       if (result) { 

        boolean numberExists = _appRegistration.checkPhoneNumber(); 
        if (!numberExists) { 
         ActivityCompat.requestPermissions(MainActivity.this, 
           new String[]{Manifest.permission.READ_PHONE_STATE}, 
           MY_PERMISSIONS_PHONE_STATE_READ); 
         return; 
        } else { 
         //do some work 
        } 
       } else { 
        Intent intent = new Intent(...); 
        startActivity(intent); 
        finish(); 


       } 


         break;.... 
    } 
} 

Auch im MainActivity ich die folgende Methode außer Kraft gesetzt haben:

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case MY_PERMISSIONS_PHONE_STATE_READ: {  
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        // do some work 
       } else { 

        // do some work 
       } 

       return; 
      } 

     } 

Aber wenn ich "erlauben" klicken oder "Verweigern", ist diese Methode nicht aufgerufen, da sich die Anwendung im Hintergrundmodus befindet ... Ich habe die Methoden und onStop protokolliert und beide werden aufgerufen, nachdem das Berechtigungsfenster angezeigt wird.

enter image description here

+0

Macht es Kraft, Ihre App auf verweigern zu stoppen? –

+0

spielt keine Rolle, wenn das Dialogfeld angezeigt wird, wird die Anwendung im Hintergrund ausgeführt. es wartet nicht auf die Antwort – Nininea

+0

Ich denke, das ist problamatic Intent intent = neue Absicht (...); startActivity (Absicht); Ende(); , nicht sicher über Ihre if (Ergebnis) aber sonst Teil ist problamatic –

Antwort

10

Es war MainActivity Problem, in Manifest-Datei als konfiguriert wurde:

android: Nohistory = "true"

ich diese Eigenschaft nur entfernt und Anwendung zu arbeiten begann, wie es erwartet wurde.

+2

+1 Dies behoben mein Problem.Scheint albern, dass dies würde es brechen und es gibt keine andere Möglichkeit, um Berechtigungen zu beantragen, ohne Hintergrund der App. Ich habe einen Startbildschirm, der fragt Aber ich möchte nicht, dass sie zum Startbildschirm zurückkehren, also muss ich das programmatisch statt deklarativ tun: WARUM Google ?! – Justin

+0

Danke, es hat gut funktioniert. –

0

mit diesem

 if (!numberExists) { 
        ActivityCompat.requestPermissions(getActivity(), 
          new String[]{Manifest.permission.READ_PHONE_STATE}, 
          MY_PERMISSIONS_PHONE_STATE_READ); 
        return; 

Versuchen diese Weise können Sie die Anfrage von Ihrer Tätigkeit beginnen und die Rückrufe empfangen werden.

+0

dieser Code ist nicht gültig :( – Nininea

+0

Ich habe es geändert, versuchen Sie es jetzt. Wenn es nicht funktioniert wird weiter darin. –

+0

Was ist der Unterschied als die Frage –