Wie kann ich für Android-Geräte mit API 23 oder höher externe Speicherberechtigungen erteilen, ohne die App neu zu starten (so wie die Musikbibliothek des Benutzers in einer Sitzung in Google Play Music hochgeladen wird)? ? Ich weiß, dass dieses Thema hier in SO mehrmals angesprochen wurde, aber bisher habe ich kein Glück gefunden.Erteilen von Berechtigungen für externen Speicher ohne Neustart der App
Hier sind die Berechtigungen in meinem Manifest-Datei:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // API 23
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return; // Included here to prevent the app from crashing.
}
}
/**
* CODE HERE FOR INSTANTIATIONS AND SUCH.
*/
}
... Denn ab jetzt, ich die App neu zu starten bräuchten für die Berechtigungen zu gehen durch (und MainActivity Instanziierungen und solche) nach die Berechtigungen aus dem ersten Pop-up-Fenster akzeptieren.
Vielen Dank.
"Ich müsste die App für die Berechtigungen neu starten" - nein, Sie nicht. Bewegen Sie "CODE HIER FÜR INSTANTIATIONS UND SOLCHE." in eine andere Methode. Rufen Sie diese Methode von 'onCreate()' auf, wenn Sie zu diesem Zeitpunkt bereits über Berechtigungen verfügen. Rufen Sie diese Methode auch von 'onRequestPermissionsResult()' auf, wenn der Benutzer diesen Berechtigungen zugestimmt hat. Sehen Sie [dieses Beispielprojekt] (https://github.com/commonsguy/cw-omnibus/tree/master/Files/FilesEditor) zum Beispiel. – CommonsWare