2017-01-27 7 views
-2

Hey Ich versuche, um Speicher Zugriffsberechtigung zu fragen, und ich stelle fest, dass in meinem anderen Telefon, das Android 5.0 hat die Erlaubnis fragen, stürzt die App. Was soll ich tun, um Erlaubnis zu fragen, ohne die App in dieser Android-Version zu stürzen und von welcher Android-Version sollte ich es tun?Aus welcher API sollte ich Berechtigungen fragen?

Dies ist der Code für die um Erlaubnis zu fragen:

int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 0; 
    if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) 
     != PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (shouldShowRequestPermissionRationale(
      Manifest.permission.READ_EXTERNAL_STORAGE)) { 
     // Explain to the user why we need to read the contacts 
    } 

    requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
      MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 

    // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an 
    // app-defined int constant that should be quite unique 

    return; 
} 
+0

Von API-Level 23+ –

+0

für alle Level Sie die Berechtigung in AndroidMenifest.xml Datei hinzufügen, aber für api> = 6 Sie haben zusätzliche Erlaubnis in Ihrem Code hinzuzufügen, wie Sie in Ihrem Code getan haben. für Binning von Android-Entwicklung Bibliothek verwenden wie https://github.com/googlesamples/easypermissions Es kann einfach Ihre Arbeit –

Antwort

0

Dynamische Berechtigungen erfordern API 23 oder höher, so dass Sie Ihren Code in einer bedingten Überprüfung der Version der API ist RAN wickeln kann.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 0; 
    if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) 
     != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if(shouldShowRequestPermissionRationale(
      Manifest.permission.READ_EXTERNAL_STORAGE)) { 
      // Explain to the user why we need to read the contacts 
     } 

     requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
       MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 

     // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an 
     // app-defined int constant that should be quite unique 

     return; 
    } 
} 
Verwandte Themen