फ़ोटो और वीडियो का कुछ ऐक्सेस देना

Android 14 में, चुनिंदा फ़ोटो का ऐक्सेस देने की सुविधा जोड़ी गई है. इसकी मदद से, उपयोगकर्ता किसी खास तरह के सभी मीडिया का ऐक्सेस देने के बजाय, ऐप्लिकेशन को अपनी लाइब्रेरी में मौजूद चुनिंदा फ़ोटो और वीडियो का ऐक्सेस दे सकते हैं.

यह बदलाव सिर्फ़ तब चालू होता है, जब आपका ऐप्लिकेशन Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करता है. अगर आपने अभी तक फ़ोटो पिकर का इस्तेमाल नहीं किया है, तो हमारा सुझाव है कि ऐप्लिकेशन में इसे लागू करें. इससे, इमेज और वीडियो चुनने का एक जैसा अनुभव मिलेगा. इससे, स्टोरेज की अनुमतियों के अनुरोध की ज़रूरत नहीं होगी और उपयोगकर्ता की निजता भी बेहतर होगी.

अगर आपने स्टोरेज की अनुमतियों का इस्तेमाल करके, अपना गैलरी पिकर बनाया है और आपको इसे लागू करने पर पूरा कंट्रोल रखना है, तो नई READ_MEDIA_VISUAL_USER_SELECTED अनुमति का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन को लागू करने के तरीके में बदलाव करें. अगर आपका ऐप्लिकेशन नई अनुमति का इस्तेमाल नहीं करता है, तो सिस्टम आपके ऐप्लिकेशन को कंपैटबिलिटी मोड में चलाता है.

टारगेट किए जा रहे SDK टूल READ_MEDIA_VISUAL_USER_SELECTED एलान किया गया चुनी गई Photos का ऐक्सेस चालू है यूज़र एक्सपीरियंस (यूएक्स) से जुड़ा व्यवहार
एसडीके 33 नहीं नहीं लागू नहीं
हां हां ऐप्लिकेशन से कंट्रोल किया जाता है
SDK 34 नहीं हां सिस्टम (काम करने का तरीका) से कंट्रोल किया जाता है
हां हां ऐप्लिकेशन से कंट्रोल किया जाता है

अपना गैलरी पिकर बनाने के लिए, बहुत ज़्यादा डेवलपमेंट और रखरखाव की ज़रूरत होती है. साथ ही, साफ़ तौर पर उपयोगकर्ता की सहमति पाने के लिए, आपके ऐप्लिकेशन को स्टोरेज की अनुमतियों का अनुरोध करना होगा. उपयोगकर्ता इन अनुरोधों को अस्वीकार कर सकते हैं. इसके अलावा, अगर आपका ऐप्लिकेशन Android 14 वाले डिवाइस पर चल रहा है और आपका ऐप्लिकेशन Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करता है, तो चुने गए मीडिया का ऐक्सेस सीमित किया जा सकता है. नीचे दी गई इमेज में, अनुमतियों का अनुरोध करने और नए विकल्पों का इस्तेमाल करके मीडिया चुनने का उदाहरण दिया गया है.

.
पहली इमेज. नया डायलॉग बॉक्स, उपयोगकर्ता को वे फ़ोटो और वीडियो चुनने की सुविधा देता है जिन्हें वे आपके ऐप्लिकेशन पर उपलब्ध कराना चाहते हैं. इसके अलावा, उन्हें पूरा ऐक्सेस देने या सभी का ऐक्सेस अस्वीकार करने के सामान्य विकल्प भी दिखेंगे.

इस सेक्शन में, MediaStore का इस्तेमाल करके अपनी गैलरी पिकर बनाने का सुझाया गया तरीका बताया गया है. अगर आपके ऐप्लिकेशन के लिए पहले से ही कोई गैलरी पिकर मौजूद है और आपको उस पर पूरा कंट्रोल चाहिए, तो इन उदाहरणों का इस्तेमाल करके, इसे लागू किया जा सकता है. अगर आप चुनी गई फ़ोटो के ऐक्सेस को मैनेज करने के लिए, लागू की गई सेटिंग को अपडेट नहीं करते हैं, तो सिस्टम आपके ऐप्लिकेशन को कंपैटबिलिटी मोड में चलाता है.

अनुमतियों का अनुरोध करना

सबसे पहले, ओएस वर्शन के हिसाब से Android मेनिफ़ेस्ट में, स्टोरेज से जुड़ी सही अनुमतियों का अनुरोध करें:

<!-- Devices running Android 12L (API level 32) or lower  -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

<!-- Devices running Android 13 (API level 33) or higher -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

<!-- To handle the reselection within the app on devices running Android 14
     or higher if your app targets Android 14 (API level 34) or higher.  -->
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />

इसके बाद, ओएस के वर्शन के हिसाब से, रनटाइम की सही अनुमतियों का अनुरोध करें:

// Register ActivityResult handler
val requestPermissions = registerForActivityResult(RequestMultiplePermissions()) { results ->
    // Handle permission requests results
    // See the permission example in the Android platform samples: https://github.com/android/platform-samples
}

// Permission request logic
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
    requestPermissions.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_VISUAL_USER_SELECTED))
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    requestPermissions.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO))
} else {
    requestPermissions.launch(arrayOf(READ_EXTERNAL_STORAGE))
}

कुछ ऐप्लिकेशन को अनुमतियां देने की ज़रूरत नहीं होती

Android 10 (एपीआई लेवल 29) के बाद, ऐप्लिकेशन को शेयर किए गए स्टोरेज में फ़ाइलें जोड़ने के लिए, स्टोरेज की अनुमतियों की ज़रूरत नहीं है. इसका मतलब है कि ऐप्लिकेशन, गैलरी में इमेज जोड़ सकते हैं, वीडियो रिकॉर्ड करके उन्हें शेयर किए गए स्टोरेज में सेव कर सकते हैं या स्टोरेज की अनुमतियों का अनुरोध किए बिना, PDF इनवॉइस डाउनलोड कर सकते हैं. अगर आपका ऐप्लिकेशन सिर्फ़ शेयर किए गए स्टोरेज में फ़ाइलें जोड़ता है और इमेज या वीडियो के लिए क्वेरी नहीं करता है, तो आपको स्टोरेज की अनुमतियों का अनुरोध करना बंद कर देना चाहिए. साथ ही, अपने AndroidManifest.xml में API 28 का maxSdkVersion सेट करना चाहिए:

<!-- No permission is needed to add files to shared storage on Android 10 (API level 29) or higher  -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="28" />

मीडिया को फिर से चुनना

Android 14 में चुनी गई फ़ोटो को ऐक्सेस करने की सुविधा के साथ, आपके ऐप्लिकेशन को मीडिया को फिर से चुनने को कंट्रोल करने के लिए, READ_MEDIA_VISUAL_USER_SELECTED की नई अनुमति का इस्तेमाल करना होगा. साथ ही, अपने ऐप्लिकेशन का इंटरफ़ेस अपडेट करना होगा, ताकि उपयोगकर्ता आपके ऐप्लिकेशन को इमेज और वीडियो के अलग-अलग सेट का ऐक्सेस दे सकें. नीचे दी गई इमेज में, अनुमतियों का अनुरोध करने और मीडिया को फिर से चुनने का उदाहरण दिया गया है:

.
दूसरी इमेज. नए डायलॉग बॉक्स से उपयोगकर्ता यह भी चुन सकता है कि वे आपके ऐप्लिकेशन में कौनसी फ़ोटो और वीडियो उपलब्ध कराना चाहते हैं.

फ़ोटो या वीडियो चुनने का डायलॉग बॉक्स खोलने पर, आपके अनुरोध के हिसाब से फ़ोटो, वीडियो या दोनों दिखते हैं. उदाहरण के लिए, अगर READ_MEDIA_IMAGES अनुमति के बिना READ_MEDIA_VIDEO अनुमति का अनुरोध किया जा रहा है, तो उपयोगकर्ताओं को फ़ाइलें चुनने के लिए यूज़र इंटरफ़ेस (यूआई) में सिर्फ़ वीडियो दिखेंगे.

// Allow the user to select only videos
requestPermissions.launch(arrayOf(READ_MEDIA_VIDEO, READ_MEDIA_VISUAL_USER_SELECTED))

यह देखा जा सकता है कि आपके ऐप्लिकेशन के पास डिवाइस की फ़ोटो लाइब्रेरी का पूरा, आंशिक या अस्वीकार किया गया ऐक्सेस है या नहीं. इसके बाद, अपना इंटरफ़ेस उसी हिसाब से अपडेट किया जा सकता है. ऐप्लिकेशन के स्टार्टअप के समय के बजाय, जब ऐप्लिकेशन को स्टोरेज का ऐक्सेस चाहिए, तब इन अनुमतियों का अनुरोध करें. ध्यान रखें कि अनुमति देने की सुविधा को onStart और onResume ऐप्लिकेशन लाइफ़साइकल कॉलबैक के बीच बदला जा सकता है. ऐसा इसलिए, क्योंकि उपयोगकर्ता आपके ऐप्लिकेशन को बंद किए बिना, सेटिंग में जाकर ऐक्सेस को बदल सकता है.

if (
    Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
    (
        ContextCompat.checkSelfPermission(context, READ_MEDIA_IMAGES) == PERMISSION_GRANTED ||
        ContextCompat.checkSelfPermission(context, READ_MEDIA_VIDEO) == PERMISSION_GRANTED
    )
) {
    // Full access on Android 13 (API level 33) or higher
} else if (
    Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE &&
    ContextCompat.checkSelfPermission(context, READ_MEDIA_VISUAL_USER_SELECTED) == PERMISSION_GRANTED
) {
    // Partial access on Android 14 (API level 34) or higher
}  else if (ContextCompat.checkSelfPermission(context, READ_EXTERNAL_STORAGE) == PERMISSION_GRANTED) {
    // Full access up to Android 12 (API level 32)
} else {
    // Access denied
}

डिवाइस लाइब्रेरी पर क्वेरी करें

यह पुष्टि करने के बाद कि आपके पास सही स्टोरेज अनुमतियों का ऐक्सेस है, डिवाइस लाइब्रेरी के बारे में क्वेरी करने के लिए, MediaStore से इंटरैक्ट किया जा सकता है (यह तरीका तब काम करता है, जब ऐक्सेस का कुछ हिस्सा या पूरा ऐक्सेस दिया गया हो):

data class Media(
    val uri: Uri,
    val name: String,
    val size: Long,
    val mimeType: String,
)

// Run the querying logic in a coroutine outside of the main thread to keep the app responsive.
// Keep in mind that this code snippet is querying only images of the shared storage.
suspend fun getImages(contentResolver: ContentResolver): List<Media> = withContext(Dispatchers.IO) {
    val projection = arrayOf(
        Images.Media._ID,
        Images.Media.DISPLAY_NAME,
        Images.Media.SIZE,
        Images.Media.MIME_TYPE,
    )

    val collectionUri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        // Query all the device storage volumes instead of the primary only
        Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL)
    } else {
        Images.Media.EXTERNAL_CONTENT_URI
    }

    val images = mutableListOf<Media>()

    contentResolver.query(
        collectionUri,
        projection,
        null,
        null,
        "${Images.Media.DATE_ADDED} DESC"
    )?.use { cursor ->
        val idColumn = cursor.getColumnIndexOrThrow(Images.Media._ID)
        val displayNameColumn = cursor.getColumnIndexOrThrow(Images.Media.DISPLAY_NAME)
        val sizeColumn = cursor.getColumnIndexOrThrow(Images.Media.SIZE)
        val mimeTypeColumn = cursor.getColumnIndexOrThrow(Images.Media.MIME_TYPE)

        while (cursor.moveToNext()) {
            val uri = ContentUris.withAppendedId(collectionUri, cursor.getLong(idColumn))
            val name = cursor.getString(displayNameColumn)
            val size = cursor.getLong(sizeColumn)
            val mimeType = cursor.getString(mimeTypeColumn)

            val image = Media(uri, name, size, mimeType)
            images.add(image)
        }
    }

    return@withContext images
}

इस कोड स्निपेट को आसान तरीके से दिखाया गया है, ताकि MediaStore के साथ इंटरैक्ट करने का तरीका आसानी से समझा जा सके. प्रोडक्शन के लिए तैयार ऐप्लिकेशन में, पेजिंग लाइब्रेरी जैसी किसी चीज़ के साथ पेजेशन का इस्तेमाल करें, ताकि अच्छी परफ़ॉर्मेंस को पक्का किया जा सके.

आखिरी बार चुने गए आइटम के बारे में क्वेरी करना

Android 15 और उसके बाद के वर्शन पर काम करने वाले ऐप्लिकेशन और Android 14 पर काम करने वाले ऐसे ऐप्लिकेशन जिनमें Google Play के सिस्टम अपडेट की सुविधा है, वे QUERY_ARG_LATEST_SELECTION_ONLY को चालू करके, उपयोगकर्ता के चुने गए आखिरी इमेज और वीडियो के बारे में जानकारी पा सकते हैं. इसके लिए, उन्हें फ़ोटो और वीडियो के लिए, ऐक्सेस का कुछ हिस्सा देना होगा:

if (getExtensionVersion(Build.VERSION_CODES.U) >= 12) {
    val queryArgs = bundleOf(
        QUERY_ARG_SQL_SORT_ORDER to "${Images.Media.DATE_ADDED} DESC"
        QUERY_ARG_LATEST_SELECTION_ONLY to true
    )

    contentResolver.query(collectionUri, projection, queryArgs, null)
}

डिवाइस अपग्रेड होने पर, फ़ोटो और वीडियो का ऐक्सेस सुरक्षित रखा जाता है

अगर आपका ऐप्लिकेशन किसी ऐसे डिवाइस पर है जिसे Android के पुराने वर्शन से Android 14 पर अपग्रेड किया गया है, तो सिस्टम उपयोगकर्ता की फ़ोटो और वीडियो का पूरा ऐक्सेस रखता है. साथ ही, यह आपके ऐप्लिकेशन को कुछ अनुमतियां अपने-आप दे देता है. डिवाइस के Android 14 पर अपग्रेड होने से पहले, आपके ऐप्लिकेशन को दी गई अनुमतियों के सेट के आधार पर, ऐप्लिकेशन का व्यवहार तय होता है.

Android 13 से जुड़ी अनुमतियां

इस स्थिति पर ध्यान दें:

  1. आपका ऐप्लिकेशन, Android 13 वाले डिवाइस पर इंस्टॉल हो.
  2. उपयोगकर्ता ने आपके ऐप्लिकेशन को READ_MEDIA_IMAGES और READ_MEDIA_VIDEO अनुमति दी है.
  3. इसके बाद, डिवाइस Android 14 पर अपग्रेड हो जाता है, जबकि आपका ऐप्लिकेशन अब भी इंस्टॉल रहता है.
  4. आपका ऐप्लिकेशन, Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करना शुरू कर देता है.

इस मामले में, आपके ऐप्लिकेशन के पास अब भी उपयोगकर्ता की फ़ोटो और वीडियो का पूरा ऐक्सेस होता है. सिस्टम, आपके ऐप्लिकेशन को अपने-आप दी गई READ_MEDIA_IMAGES और READ_MEDIA_VIDEO अनुमतियां भी बनाए रखता है.

Android 12 और उससे पहले वाले वर्शन के लिए अनुमतियां

इस स्थिति पर ध्यान दें:

  1. आपका ऐप्लिकेशन, Android 13 वाले डिवाइस पर इंस्टॉल हो.
  2. उपयोगकर्ता ने आपके ऐप्लिकेशन को READ_EXTERNAL_STORAGE अनुमति या WRITE_EXTERNAL_STORAGE अनुमति दी है.
  3. इसके बाद, डिवाइस Android 14 पर अपग्रेड हो जाता है, जबकि आपका ऐप्लिकेशन अब भी इंस्टॉल रहता है.
  4. आपका ऐप्लिकेशन, Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करना शुरू कर देता है.

इस स्थिति में, आपके ऐप्लिकेशन के पास अब भी उपयोगकर्ता की फ़ोटो और वीडियो का पूरा ऐक्सेस होता है. सिस्टम आपके ऐप्लिकेशन को अपने-आप READ_MEDIA_IMAGES और READ_MEDIA_VIDEO की अनुमति भी देता है.

सबसे सही तरीके

इस सेक्शन में, READ_MEDIA_VISUAL_USER_SELECTED अनुमति का इस्तेमाल करने के कई सबसे सही तरीके बताए गए हैं. ज़्यादा जानकारी के लिए, अनुमति देने के सबसे सही तरीके देखें.

अनुमति की स्थिति को हमेशा के लिए सेव न करें

अनुमति की स्थिति को हमेशा के लिए सेव न करें. इसमें SharedPreferences या DataStore भी शामिल है. हो सकता है कि सेव की गई स्थिति, असल स्थिति के साथ सिंक न हो. अनुमति को रीसेट करने, ऐप्लिकेशन के हाइबरनेशन, और आपके ऐप्लिकेशन की सेटिंग में उपयोगकर्ता की ओर से किए गए बदलाव के बाद या आपका ऐप्लिकेशन बैकग्राउंड में चलने के बाद, अनुमति की स्थिति बदल सकती है. इसके बजाय, ContextCompat.checkSelfPermission() का इस्तेमाल करके देखें कि स्टोरेज की अनुमतियां हैं या नहीं.

यह न सोचें कि आपको फ़ोटो और वीडियो का पूरा ऐक्सेस मिलेगा

Android 14 में किए गए बदलावों के आधार पर, हो सकता है कि आपके ऐप्लिकेशन के पास डिवाइस की फ़ोटो लाइब्रेरी का सिर्फ़ कुछ हिस्सा ऐक्सेस करने का ऐक्सेस हो. अगर ऐप्लिकेशन ContentResolver का इस्तेमाल करके क्वेरी करने पर, MediaStore डेटा को कैश मेमोरी में सेव कर रहा है, तो हो सकता है कि कैश मेमोरी में सेव किया गया डेटा अप-टू-डेट न हो.

  • स्टोर की गई कैश मेमोरी के बजाय हमेशा ContentResolver का इस्तेमाल करके, MediaStore से क्वेरी करें.
  • ऐप्लिकेशन के फ़ोरग्राउंड में होने पर, नतीजों को 'यादें' में सेव रखें.
  • जब आपका ऐप्लिकेशन onResume ऐप्लिकेशन लाइफ़साइकल से गुज़रता है, तो नतीजों को रीफ़्रेश करें. ऐसा इसलिए, क्योंकि उपयोगकर्ता अनुमति की सेटिंग की मदद से, पूरे ऐक्सेस से कुछ हिस्से के ऐक्सेस पर स्विच कर सकता है.

यूआरआई के ऐक्सेस को कुछ समय के लिए मानें

अगर उपयोगकर्ता, सिस्टम की अनुमतियों वाले डायलॉग में फ़ोटो और वीडियो चुनें को चुनता है, तो चुनी गई फ़ोटो और वीडियो का ऐक्सेस आपके ऐप्लिकेशन के लिए खत्म हो जाता है. आपके ऐप्लिकेशन को हमेशा इस बात का ध्यान रखना चाहिए कि उसके पास किसी भी Uri का ऐक्सेस न हो. भले ही, उस Uri के पास कितनी भी अनुमति हो.

अनुमति के हिसाब से चुने जा सकने वाले मीडिया टाइप को फ़िल्टर करें

चुने गए डायलॉग बॉक्स में, अनुरोध की गई अनुमति के टाइप के हिसाब से बदलाव होता है:

  • सिर्फ़ READ_MEDIA_IMAGES का अनुरोध करने पर, सिर्फ़ चुनी जा सकने वाली इमेज दिखती हैं.
  • सिर्फ़ READ_MEDIA_VIDEO का अनुरोध करने पर, सिर्फ़ वीडियो को चुना जा सकता है.
  • READ_MEDIA_IMAGES और READ_MEDIA_VIDEO, दोनों का अनुरोध करने पर पूरी फ़ोटो लाइब्रेरी, चुनने लायक दिखती है.

अपने ऐप्लिकेशन के इस्तेमाल के उदाहरणों के आधार पर, आपको सही अनुमतियों का अनुरोध करना चाहिए, ताकि लोगों को खराब अनुभव न मिले. अगर किसी सुविधा के लिए सिर्फ़ वीडियो चुनने की ज़रूरत है, तो सिर्फ़ READ_MEDIA_VIDEO का अनुरोध करें.

एक ही कार्रवाई में अनुमतियों का अनुरोध करें

उपयोगकर्ताओं को सिस्टम के रनटाइम के दौरान एक से ज़्यादा डायलॉग बॉक्स न दिखें, इसके लिए एक ही ऑपरेशन में READ_MEDIA_VISUAL_USER_SELECTED, ACCESS_MEDIA_LOCATION, और "मीडिया पढ़ने" की अनुमतियों (READ_MEDIA_IMAGES, READ_MEDIA_VIDEO या दोनों) का अनुरोध करें.

उपयोगकर्ताओं को अपनी पसंद मैनेज करने की अनुमति देना

जब उपयोगकर्ता कुछ हिस्से का ऐक्सेस देने वाला मोड चुनता है, तो आपके ऐप्लिकेशन को यह नहीं लगना चाहिए कि डिवाइस की फ़ोटो लाइब्रेरी खाली है. साथ ही, ऐप्लिकेशन को उपयोगकर्ता को ज़्यादा फ़ाइलें देने की अनुमति देनी चाहिए.

उपयोगकर्ता, अनुमति सेटिंग की मदद से, पूरे ऐक्सेस से कुछ हिस्से के ऐक्सेस पर स्विच कर सकता है. ऐसा करने पर, कुछ विज़ुअल मीडिया फ़ाइलों का ऐक्सेस नहीं दिया जाएगा.

कम्पैटिबिलिटी मोड

अगर आपने स्टोरेज की अनुमतियों का इस्तेमाल करके अपना गैलरी पिकर बनाया है, लेकिन READ_MEDIA_VISUAL_USER_SELECTED की नई अनुमति का इस्तेमाल करने के लिए अपने ऐप्लिकेशन में बदलाव नहीं किया है, तो जब भी उपयोगकर्ता को मीडिया चुनना या फिर से चुनना होगा, तब सिस्टम आपके ऐप्लिकेशन को काम करने के लिए बनाए गए मोड में चलाएगा.

मीडिया चुनने के दौरान होने वाली गतिविधि

शुरुआती तौर पर चुनने के दौरान, अगर कोई उपयोगकर्ता "फ़ोटो और वीडियो चुनें" ( पहली इमेज देखें) का विकल्प चुनता है, तो READ_MEDIA_IMAGES और READ_MEDIA_VIDEO की अनुमतियां ऐप्लिकेशन सेशन के दौरान दी जाती हैं. इससे, कुछ समय के लिए अनुमति दी जाती है और कुछ समय के लिए उपयोगकर्ता की चुनी गई फ़ोटो और वीडियो का ऐक्सेस मिलता है. जब आपका ऐप्लिकेशन बैकग्राउंड में चला जाता है या जब उपयोगकर्ता आपके ऐप्लिकेशन को बंद कर देता है, तो सिस्टम इन अनुमतियों को अस्वीकार कर देता है. यह व्यवहार, एक बार के लिए ली जाने वाली अन्य अनुमतियों की तरह ही होता है.

मीडिया को फिर से चुनने के दौरान होने वाली कार्रवाइयां

अगर आपके ऐप्लिकेशन को बाद में अन्य फ़ोटो और वीडियो ऐक्सेस करने की ज़रूरत पड़ती है, तो आपको मैन्युअल तरीके से READ_MEDIA_IMAGES या READ_MEDIA_VIDEO की अनुमति फिर से लेनी होगी. सिस्टम, अनुमति के लिए किए गए शुरुआती अनुरोध के दौरान अपनाए गए फ़्लो का ही पालन करता है. इसमें उपयोगकर्ताओं से फ़ोटो और वीडियो चुनने के लिए कहा जाता है (दूसरी इमेज देखें).

अगर आपका ऐप्लिकेशन अनुमतियों के सबसे सही तरीकों का पालन कर रहा है, तो इस बदलाव से आपके ऐप्लिकेशन पर कोई असर नहीं पड़ेगा. ऐसा खास तौर पर तब होता है, जब आपका ऐप्लिकेशन यह न मानता हो कि यूआरआई का ऐक्सेस बरकरार है, सिस्टम की अनुमति की स्थिति सेव करता हो या अनुमति में बदलाव होने के बाद, दिखाई गई इमेज के सेट को रीफ़्रेश करता हो. हालांकि, आपके ऐप्लिकेशन के इस्तेमाल के उदाहरण के आधार पर, ऐसा हो सकता है कि यह तरीका सही न हो. उपयोगकर्ताओं को बेहतरीन अनुभव देने के लिए, हमारा सुझाव है कि आप फ़ोटो पिकर लागू करें या READ_MEDIA_VISUAL_USER_SELECTED अनुमति का इस्तेमाल करके, इस व्यवहार को सीधे मैनेज करने के लिए अपने ऐप्लिकेशन के गैलरी पिकर को अडैप्ट करें.