ऐप्लिकेशन अनुमतियों का एलान करना

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

अनुमति के लिए अनुरोध करने की प्रोसेस, इस बात पर निर्भर करती है कि अनुमति:

ऐप्लिकेशन मेनिफ़ेस्ट में एलान जोड़ें

आपका ऐप्लिकेशन जिस अनुमति का अनुरोध कर सकता है उसका एलान करने के लिए, सही जानकारी शामिल करें <uses-permission> एलिमेंट में की मेनिफ़ेस्ट फ़ाइल में दी गई है. उदाहरण के लिए, कोई ऐसा ऐप्लिकेशन जिसे कैमरे को ऐक्सेस करने की ज़रूरत होती है AndroidManifest.xml में यह पंक्ति है:

<manifest ...>
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

हार्डवेयर को 'शामिल होना ज़रूरी नहीं है' के तौर पर बताएं

कुछ अनुमतियां, जैसे कि CAMERA, अपने ऐप्लिकेशन को अनुमति दें हार्डवेयर के उन हिस्सों को ऐक्सेस करना जो सिर्फ़ कुछ Android डिवाइसों में ही होते हैं. अगर आपका ऐप्लिकेशन इनमें से किसी एक हार्डवेयर से जुड़े होने का एलान करता है अनुमतियां हैं, यह देखें कि क्या आपका ऐप्लिकेशन अब भी किसी ऐसे डिवाइस पर चल सकता है जिसमें वह हार्डवेयर. ज़्यादातर मामलों में, हार्डवेयर वैकल्पिक होता है, इसलिए बेहतर होगा कि हार्डवेयर की जानकारी देने के लिए, android:required को false पर सेट करें <uses-feature> एलान, इस तरह से करें AndroidManifest.xml फ़ाइल से नीचे दिए गए कोड स्निपेट में दिखाया गया है:

<manifest ...>
    <application>
        ...
    </application>
    <uses-feature android:name="android.hardware.camera"
                  android:required="false" />
<manifest>

हार्डवेयर की उपलब्धता के बारे में जानकारी

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

Kotlin

// Check whether your app is running on a device that has a front-facing camera.
if (applicationContext.packageManager.hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

Java

// Check whether your app is running on a device that has a front-facing camera.
if (getApplicationContext().getPackageManager().hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

एपीआई लेवल के हिसाब से अनुमतियों का एलान करना

सिर्फ़ रनटाइम की अनुमतियों की सुविधा वाले डिवाइस पर अनुमति का एलान करने के लिए— Android 6.0 (एपीआई लेवल 23) या इसके बाद के वर्शन वाले डिवाइसों में <uses-permission-sdk-23> के बजाय <uses-permission> एलिमेंट.

इनमें से किसी भी एलिमेंट का इस्तेमाल करते समय, maxSdkVersion एट्रिब्यूट को सेट किया जा सकता है यह बताने के लिए कि Android के वर्शन वाले डिवाइस बताई गई वैल्यू के लिए किसी खास अनुमति की ज़रूरत नहीं है. इससे आपको यह सुविधा काम करते हुए भी गै़र-ज़रूरी अनुमतियों को खत्म कर सकती है पुराने डिवाइसों के लिए.

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