2015-11-02 11 views
11

नहीं दिया गया है मैं जब Android ओएस 4.0 पर मेरे एप्लिकेशन चल रहा है और साथ READ_EXTERNAL_STORAGE अनुमति देने का अनुरोध एक समस्या है: मैं हमेशा कॉलबैक पर मिलताएंड्रॉयड Marshmallow अनुमति मॉडल हमेशा

ActivityCompat.requestPermissions(ctx, requestedPermissions, requestCode); 

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

grantResults != PackageManager.PERMISSION_GRANTED 

ActivityCompat.checkSelfPermission के साथ अनुमति की जांच हमेशा permissionDenied लौटा रही है।

यह सिस्टम संवाद के साथ अनुमति का अनुरोध करके ओएस 6.0 पर अच्छा काम करता है। एंड्रॉइड ओएस 4.x 4.0 को छोड़कर अनुमति हमेशा दी जाती है। ओएस 4.0 अन्य अनुमतियां (कैमरा, कैलेंडर, संपर्क, फोन) इस समस्या के कारण READ_EXTERNAL_STORAGE को छोड़कर अच्छी तरह से व्यवहार कर रही हैं।

शायद एक ओएस मुद्दा है?

+0

यह अजीब है। क्या आप अनुमति की सामान्य विधि का उपयोग करने का प्रयास कर सकते हैं जो है .requestPermission (requestPermissions, requestCode); – dex

+1

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

+0

@dex समस्या यह है कि अनुमतियों के लिए गतिविधि से संबंधित विधियां केवल API 23 – skirix

उत्तर

11

What ActivityCompat.requestPermissions() does है: अगर आप एंड्रॉयड

के पुराने संस्करणों पर अनुरोध की गई अनुमति पकड़

  • असली requestPermissions() आप Android 6.0+ पर कर रहे हैं, या

  • उपयोग PackageManager के माध्यम से कॉल को देखने के लिए

READ_EXTERNAL_STORAGE के साथ समस्या यह है कि इसे API स्तर 16 में जोड़ा गया था (एंड्रॉइड 4.1)। आप इसे एंड्रॉइड के पुराने संस्करणों पर नहीं रख सकते हैं, सरल कारण यह है कि यह अस्तित्व में नहीं था।

कोई एक:

  • अपने minSdkVersion 16 के लिए सेट करें, या

  • इस मामले को संभालने के लिए, यह मानते हुए कि READ_EXTERNAL_STORAGE एपीआई स्तर 16

से पहले अप्रासंगिक है में अपने स्वयं के तर्क रखो
+0

अब सब कुछ स्पष्ट है!धन्यवाद – skirix

+7

एक सरल कामकाज 'WRITE_EXTERNAL_STORAGE' अनुमति के लिए पूछना है, जो कि एपीआई 4 है। एम में,' लिखना 'और' रीड 'एक ही अनुमति समूह में रहते हैं, इसलिए पूर्व के लिए पूछना बाद के लोगों तक पहुंच प्रदान करेगा भी। केवल नकारात्मक बात यह है कि 4.1 से पहले के संस्करण देखेंगे कि एक नई अनुमति की आवश्यकता है, अगर आप पहले केवल 'रीड' मांग रहे थे। – Sebastiano

+1

@dextor: यह मानता है कि एंड्रॉइड हमेशा उपयोगकर्ता को अनुमति समूह के स्तर पर अधिकारों के लिए पूछेगा, अनुमति के स्तर पर नहीं। मैं उस धारणा को नहीं बनाऊंगा। – CommonsWare

संबंधित मुद्दे