-1

Ich habe gerade herausgefunden, wie die Android-App ein Dialogfeld für die Erlaubnis fragen und nur einen bestimmten Befehl ausführen, wenn der Benutzer erlaubt erlaubt. Aber ich bin fest darauf, die App danach neu starten zu lassen, da der Android-Bug der App keine Berechtigung hat, wenn sie nicht neu gestartet wird.Android M Run Time Erlaubnis Probleme

Code wie scheint nicht zu funktionieren. Die App wird neu gestartet, geht aber nicht weiter; die gleichen Einstellungen beibehalten, die vom Gerät beim ersten Start zugewiesen wurden.

// Schedule start after 1 second 
     PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), PendingIntent.FLAG_CANCEL_CURRENT); 
     AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     am.set(AlarmManager.RTC, System.currentTimeMillis() + 10000, pi); 

     // Stop now 
     System.exit(0); 

Gibt es eine andere Möglichkeit, die App neu zu starten, eine, die das Telefon die App es die Erlaubnis, bestimmte Dinge zu tun hat, zu sagen, damit funktionieren würde.

+1

Sie müssen die App nicht neu starten, um die Erlaubnis zu erhalten. Es gibt keinen solchen Android-Fehler. Können Sie weitere Informationen darüber veröffentlichen, warum Sie glauben, dass ein solcher Fehler vorliegt? –

+0

Starten Sie die App nicht neu. Sie müssen lediglich zur Laufzeit nach der Berechtigung fragen und sicherstellen, dass sie nicht abstürzt, wenn die Berechtigung nicht erteilt wird. – Shark

+0

Ich habe ein paar Leute Beiträge gelesen, die das Problem mit der App sagen, Berechtigungen nicht zu ändern, nachdem erlaubt wurde, ist der Fehler. Die einzige Möglichkeit, diese Änderung vorzunehmen, besteht darin, die App neu zu starten. – TheSwindler44

Antwort

1

Wenn Sie nach Berechtigungen in der Laufzeit fragen, arbeiten Sie asynchron. Daher sollten Sie in der Aktivität, in der Sie nach Berechtigungen fragen, onRequestPermissionsResult() außer Kraft setzen. Gefällt mir:

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 


    switch (requestCode) { 
     case Constants.YOUR_REQUEST_CODE: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // permission was granted. do your stuff here 
      } else { 
       // Permission denied - Show a message to inform the user that this app only works 
       // with these permissions granted 

      } 
      return; 
     } 

    } 
}