2015-11-02 13 views
11

verilmeyen: Hep callback'inde olsunAndroid Hatmi izni modeli daima Android OS 4.0 benim app çalışan ve birlikte <code>READ_EXTERNAL_STORAGE</code> izin isterken bir sorun var

ActivityCompat.requestPermissions(ctx, requestedPermissions, requestCode); 

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

grantResults != PackageManager.PERMISSION_GRANTED 

ActivityCompat.checkSelfPermission ile iznin denetlenmesi her zaman permissionDenied döndürüyor.

Sistem iletişim kutusundan izin isteyerek OS 6.0'da iyi çalışır. Android OS 4.x 4.0 hariç izin her zaman verilir. OS 4.0 diğer izinler (Kamera, Takvim, İletişim, Telefon), bu soruna neden olan READ_EXTERNAL_STORAGE dışında iyi davranıyor.

Belki bir OS sorunu?

+0

Bu garip. .requestPermission (requestedPermissions, requestCode) olan normal izin yöntemini kullanmayı deneyebilir; – dex

+1

http://stackoverflow.com/questions/32129716/how-does-storage-access-change-on-android-6 –

+0

@dex Sorun, izinlerle ilgili etkinliklerle ilgili yöntemlerin yalnızca API 23 – skirix

cevap

11

What ActivityCompat.requestPermissions() does şudur: Android

eski sürümlerinde istenen izinleri tutarsan gerçek Android 6.0+ üzerinde ise requestPermissions() veya

  • kullanım PackageManager kadar

    • çağrı görmek için

    READ_EXTERNAL_STORAGE ile ilgili sorun, bu API Düzey 16'da eklenmiş olmasıdır (Android 4.1). Android'in daha eski sürümlerinde bunu tutamazsınız, çünkü mevcut olmamıştı.

    Ya: senin minSdkVersion 16 Set

    • veya

    • READ_EXTERNAL_STORAGE önce API Seviye 16

    alakasız olduğunu kabul ederek bu durumun ele alınması kendi mantığı koy
  • +0

    Şimdi her şey açık!Teşekkürler – skirix

    +7

    Basit bir çözüm, API 4 yerine "WRITE_EXTERNAL_STORAGE" iznini sormaktır. M, "WRITE" ve "READ", aynı izin grubunda yaşar, bu yüzden eskiden sormak, ikincisine erişim izni verir. de. Tek dezavantajı ise, 4.1'den önceki sürümlerin, daha önce sadece "READ" yi sormak için yeni bir izin gerektiğini görecek olmasıdır. – Sebastiano

    +1

    @dextor: Android'in her zaman kullanıcıya, izin düzeyinden değil, izin grubunun düzeyindeki haklardan istediğini varsayar. Bu varsayımı yapmayacağım. – CommonsWare