मैंने उसी समस्या का सामना किया। Android में दो प्रकार की अनुमतियाँ हैं:
- खतरनाक (संपर्कों तक पहुंच, बाहरी संग्रहण पर लिखें ...)
- सामान्य (सामान्य अनुमतियां स्वचालित रूप से Android द्वारा अनुमोदित की जाती हैं, जबकि खतरनाक अनुमतियों को Android उपयोगकर्ताओं द्वारा अनुमोदित करने की आवश्यकता होती है।)
यहां Android 6.0 में खतरनाक अनुमति प्राप्त करने की रणनीति है
- जाँच करें कि क्या आपके पास अनुमति है
- यदि आपके ऐप को पहले से ही अनुमति दी गई है, तो आगे बढ़ें और सामान्य रूप से प्रदर्शन करें।
- यदि आपके ऐप की अभी अनुमति नहीं है, तो उपयोगकर्ता से अनुमोदन करने के लिए कहें
- में उपयोगकर्ता अनुमोदन को सुनें
onRequestPermissionsResult
यहाँ मेरा मामला है: मुझे बाहरी संग्रहण पर लिखना होगा।
सबसे पहले, मैं जाँच करता हूँ कि क्या मेरी अनुमति है:
...
private static final int REQUEST_WRITE_STORAGE = 112;
...
boolean hasPermission = (ContextCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
if (!hasPermission) {
ActivityCompat.requestPermissions(parentActivity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_STORAGE);
}
फिर उपयोगकर्ता की स्वीकृति देखें:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case REQUEST_WRITE_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
//reload my activity with permission granted or use the features what required the permission
} else
{
Toast.makeText(parentActivity, "The app was not allowed to write to your storage. Hence, it cannot function properly. Please consider granting it this permission", Toast.LENGTH_LONG).show();
}
}
}
}