पर कोई प्रभाव नहीं पड़ता है यह के नए मॉडल के संबंध में Manifest.permission.WRITE_EXTERNAL_STORAGE
अनुमति का अनुरोध करते समय है।रनटाइम पर WRITE_EXTERNAL_STORAGE अनुमति का अनुरोध करने और अनुमति देने से वर्तमान सत्र
संक्षेप में, मैं क्या अनुभव कर रहा हूँ कि अगर मैं अनुरोध करता हूँ (और उपयोगकर्ता की अनुमति देता है) Manifest.permission.WRITE_EXTERNAL_STORAGE
अनुमति एप्लिकेशन को पढ़ सकते हैं और बाह्य भंडारण निर्देशिका से लिखना जब तक मैं को नष्ट करने और एप्लिकेशन को पुनः आरंभ करने में सक्षम नहीं होगा है ।
यह मैं क्या कर रहा हूँ/का सामना कर रहा है:
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
यह वह जगह है, मैं बाहरी संग्रहण तक पहुंचने के लिए अनुमति नहीं है:
मेरा ऐप एक राज्य है जहां से शुरू होता है।
फिर, मैं Manifest.permission.WRITE_EXTERNAL_STORAGE की अनुमति का अनुरोध गूगल बताते
private void requestWriteExternalStoragePermission() {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
new AlertDialog.Builder(this)
.setTitle("Inform and request")
.setMessage("You need to enable permissions, bla bla bla")
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(MendeleyActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RC_PERMISSION_WRITE_EXTERNAL_STORAGE);
}
})
.show();
} else {
ActivityCompat.requestPermissions(MendeleyActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RC_PERMISSION_WRITE_EXTERNAL_STORAGE);
}
}
एक बार उपयोगकर्ता की अनुमति की अनुमति देता है बस के रूप में, onRequestPermissionsResult
लागू हो जाता है।
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case RC_PERMISSION_WRITE_EXTERNAL_STORAGE: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && PackageManager.PERMISSION_GRANTED
// allowed
} else {
// denied
}
break;
}
}
}
allowed
ब्लॉक निष्पादित किया जाता है, इस बात की पुष्टि उपयोगकर्ता अनुमति दे दी है।
इसके बाद तुरंत, यदि मैं फिर से ऐप को नष्ट नहीं करता और खोलता हूं, तो मुझे अभी भी बाहरी संग्रहण के लिए कोई एक्सेस अनुमति नहीं है। अधिक विशेष रूप से:
hasWriteExternalStoragePermission(); // returns true
Environment.getExternalStorageDirectory().canRead(); // RETURNS FALSE!!
Environment.getExternalStorageDirectory().canWrite(); // RETURNS FALSE!!
इसलिए, यह एंड्रॉयड क्रम सोचता है कि मैं अनुमतियाँ लगता है, लेकिन फाइल सिस्टम Environment.getExternalStorageDirectory()
तक पहुँचने का प्रयास वास्तव में नहीं है ... , अपवाद फेंकता है:
android.system.ErrnoException: open failed: EACCES (Permission denied)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
at libcore.io.IoBridge.open(IoBridge.java:438)
at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
अगर अब मैं ऐप को नष्ट कर देता हूं और इसे फिर से खोलता हूं, व्यवहार को बाहरी भंडारण फ़ोल्डर में पढ़ने और लिखने में सक्षम होने के कारण बनना चाहिए।
क्या कोई इसका अनुभव कर रहा है?
मैं के साथ एक आधिकारिक एमुलेटर उपयोग कर रहा हूँ:
- नवीनतम एंड्रॉयड 6.0 (एपीआई 23) एपीआई 23, रेव 1.
- एम्यूलेटर चल इंटेल x86 एटम सिस्टम छवि, एपीआई 23, रेव 1.
android {
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
}
...
}
कोई इस बात की पुष्टि करता है और मैं न केवल पर हूँ, तो:
मैं के साथ ऐप्लिकेशन का निर्माण मुझे लगता है कि हमें एक बग खोलने की आवश्यकता होगी, लेकिन मुझे आशा है कि मैं कुछ गलत कर रहा हूं, क्योंकि मुझे लगता है कि इस तरह की कोर फीचर एसडीके में छोटी गाड़ी होने की संभावना नहीं है।
"क्या कोई इसका अनुभव कर रहा है?" - मैं नहीं हूं, लेकिन मैंने इसे एक एमुलेटर पर नहीं देखा है। मैं हार्डवेयर का उपयोग कर रहा हूँ। – CommonsWare
फिर यह केवल एमुलेटर पर होने की संभावना है ... एक बार जब मैं एंड्रॉइड एम अपडेट प्राप्त करता हूं तो मैं अपडेट करूंगा। – GaRRaPeTa
https://code.google.com/p/android-developer-preview/issues/detail?id=2982 – greywolf82