एंड्रॉइड 6.0 से शुरू, रनटाइम पर अनुमतियां अनुरोध की जाती हैं, और स्थापना से पहले नहीं।शो अनुमति स्पष्टीकरण asynchronisly
एंड्रॉयड official doc निम्न कोड की सिफारिश की:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
...
}
}
मैं ऊपर नमूना कोड में एक बात के बारे में उलझन में हूँ, यही कारण है कि टिप्पणी ऊपर कहते हैं, "उपयोगकर्ता एसिंक्रोनस रूप को एक विवरण दिखाएँ" है? क्या यह एक सम्मेलन का पालन करना है? मेरा मतलब है कि अगर मैं अनुमति देने की अनुमति देने के लिए एक संवाद पॉप अप करने की योजना बना रहा हूं, तो मुझे संवाद को अतुल्यकालिक रूप से पॉप अप करने की आवश्यकता दिखाई नहीं दे रही है। मुझे समझ में नहीं आता कि Google वहां एसिंक्रोनस कोड क्यों सुझाता है।
क्या यह इंगित करता है कि Google डेवलपर पॉपअप संवाद नहीं चाहता है लेकिन कुछ भारी कार्रवाई करें? हम्म ... वैसे भी, इस पर काफी उलझन में।
तो, जब संवाद के साथ स्पष्टीकरण दिखाते हैं, तो मुझे उदाहरण का उपयोग करने की आवश्यकता नहीं है। AysncTask संवाद पॉप अप करने के लिए क्योंकि यह पहले से ही एक असीमित कॉल है? –
@ Leem.fin: आपको 'AsyncTask' जैसे पृष्ठभूमि थ्रेड से संवाद प्रदर्शित करने के लिए 'show()' को कॉल करने की आवश्यकता नहीं है। – CommonsWare