ALWAYS_SANDBOX_DISPLAY_APIS
बदलाव का आईडी: 185004937
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
चालू होने पर, यह विंडो मोड के बावजूद, किसी पैकेज पर डिसप्ले एपीआई सैंडबॉक्सिंग लागू करता है. Display API हमेशा ऐप्लिकेशन के बाउंड की जानकारी देंगे.
इस बदलाव के बारे में ज़्यादा जानने के लिए, Android 12 के व्यवहार में हुए बदलावों वाले पेज पर,
डिसप्ले के लिए इस्तेमाल नहीं किए जा सकने वाले तरीकों के बारे में सेक्शन देखें.
|
AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER
बदलाव आईडी: 163400105
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 से, प्लैटफ़ॉर्म बेहतर ऑटोमैटिक भरने की सुविधा का इस्तेमाल करके, टेक्स्ट के अलावा अन्य सुझाव भी दे सकता है. जैसे, इमेज. इसके बारे में ज़्यादा जानने के लिए, ऑटोमैटिक भरने की सेवाएं देखें. किसी ऐप्लिकेशन को ये सुझाव दिखाने के लिए, आम तौर पर उसे OnReceiveContentListener एपीआई लागू करना होगा.
जिन ऐप्लिकेशन में पहले से InputConnection.commitContent(InputContentInfo, int, Bundle) एपीआई लागू है उनके लिए, इस एपीआई को आसानी से अपनाया जा सके, इसके लिए हम उस एपीआई का फ़ॉलबैक के तौर पर फिर से इस्तेमाल करते हैं. ऐसा तब किया जाता है, जब ऐप्लिकेशन में अब तक OnReceiveContentListener लागू न किया गया हो. यह फ़ॉलबैक सिर्फ़ Android 12 (एपीआई लेवल 31) पर चालू होता है. इस बदलाव से, फ़ॉलबैक की सुविधा बंद हो जाती है. इसलिए, Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन को टेक्स्ट के अलावा अन्य सुझाव स्वीकार करने के लिए,
OnReceiveContentListener एपीआई लागू करना होगा.
|
BLOCK_FLAG_SLIPPERY
बदलाव का आईडी: 157929241
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) पर काम करने वाले ऐप्लिकेशन के लिए, यह जांच की जाती है कि ऐप्लिकेशन में किसी विंडो के साथ
FLAG_SLIPPERY का इस्तेमाल किया जा रहा है या नहीं. हमें उम्मीद है कि इस फ़्लैग का इस्तेमाल सिर्फ़ सिस्टम कॉम्पोनेंट करते हैं, क्योंकि यह एक ऐसा फ़ील्ड है जो
काम नहीं करता. अगर ऐसा है, तो उस पर पाबंदी लगा दी जाएगी.
|
BLOCK_GPS_STATUS_USAGE
बदलाव का आईडी: 144027538
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, GpsStatus
एपीआई के सभी इस्तेमाल को GnssStatus एपीआई से बदलना होगा.
|
BLOCK_IMMUTABLE_PENDING_INTENTS
बदलाव आईडी: 171317480
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, जगह की जानकारी के एपीआई में पास किए गए, बदलाव न किए जा सकने वाले PendingIntent
ऑब्जेक्ट से IllegalArgumentException. जनरेट होगा
|
BLOCK_PENDING_INTENT_SYSTEM_API_USAGE
बदलाव का आईडी: 169887240
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, LocationRequest सिस्टम एपीआई का इस्तेमाल, PendingIntent
जगह की जानकारी के अनुरोधों के साथ नहीं किया जा सकता.
|
BLOCK_UNTRUSTED_TOUCHES
बदलाव आईडी: 158002302
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.
सिस्टम की सुरक्षा और उपयोगकर्ता को बेहतर अनुभव देने के लिए, Android 12 ऐप्लिकेशन को टच इवेंट का इस्तेमाल करने से रोकता है. ऐसा तब होता है, जब कोई ओवरले ऐप्लिकेशन को असुरक्षित तरीके से ब्लॉक करता है.
इस बदलाव के बारे में ज़्यादा जानने के लिए, भरोसेमंद नहीं होने वाले टच इवेंट ब्लॉक किए गए हैं लेख पढ़ें.
|
CALL_ACTIVITY_RESULT_BEFORE_RESUME
बदलाव का आईडी: 78294732
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, गतिविधि के नतीजे के लाइफ़साइकल को ठीक करता है. इससे यह पक्का होता है कि गतिविधि को फिर से शुरू करने से ठीक पहले, उसे गतिविधि का नतीजा मिल जाए.
|
CAMERA_MIC_INDICATORS_NOT_PRESENT
बदलाव का आईडी: 162547999
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
इससे पता चलता है कि यह डिवाइस, कैमरे और माइक्रोफ़ोन के इंडिकेटर के साथ काम करता है. अगर मौजूद है, तो false होगा, क्योंकि अगर बदलाव आईडी मौजूद नहीं है, तो CompatChanges#isChangeEnabled तरीका true दिखाता है.
|
CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS
बदलाव आईडी: 146211400
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, पैकेज मैनेजर किसी पैकेज को इंस्टॉल नहीं करेगा. ऐसा तब होगा, जब अनुमति के गलत ग्रुप मौजूद हों.
अनुमति के ग्रुप सिर्फ़ उन ऐप्लिकेशन के बीच शेयर किए जाने चाहिए जो एक ही सर्टिफ़िकेट शेयर करते हैं. अगर कोई अनुमति किसी ग्रुप से जुड़ी है, तो उस ग्रुप की जानकारी भी देनी होगी.
|
CHANGE_ID_AUTH_STATE_DENIED
बदलाव आईडी: 181350407
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले क्लाइंट ऐप्लिकेशन के लिए, अनुमति न मिलने की स्थिति में, किसी नैनोऐप्लिकेशन को मैसेज भेजने की कोशिश करने पर SecurityException गड़बड़ी का कोड दिखता है.
|
CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION
बदलाव का आईडी: 136069189
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, SecurityException तब दिखता है, जब उनके पास
HIGH_SAMPLING_RATE_SENSORS अनुमति न हो, वे डीबग मोड में चल रहे हों, और सैंपलिंग रेट का अनुरोध 200 हर्ट्ज़ से ज़्यादा हो.
|
DELIVER_HISTORICAL_LOCATIONS
बदलाव का आईडी: 73144566
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, जगह की जानकारी के क्लाइंट को कुछ मामलों में, मौजूदा समय से पहले की जगह की जानकारी मिल सकती है.
|
DISPLAY_INFO_NR_ADVANCED_SUPPORTED
बदलाव आईडी: 181658987
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyDisplayInfo में किए गए बदलावों के साथ काम करने की सुविधा उपलब्ध कराता है.
|
DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE
बदलाव का आईडी: 170503758
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, प्लैटफ़ॉर्म किसी ऐप्लिकेशन के फ़्रेम रेट को रिफ़्रेश रेट के डिवाइडर तक कम कर सकता है. ऐसा तब किया जाता है, जब यह ज़्यादा बेहतर हो. उदाहरण के लिए, जब ऐप्लिकेशन को Surface.setFrameRate(float, int) पर कॉल किया गया हो. ऐप्लिकेशन को कम किए गए फ़्रेम रेट पर Choreographer.postFrameCallback(Choreographer.FrameCallback) कॉलबैक और बैकप्रेशर का अनुभव होगा. ऐप्लिकेशन, डिसप्ले के रीफ़्रेश रेट के बारे में जानने के लिए Display.getRefreshRate() और
Display.Mode.getRefreshRate() का इस्तेमाल करते हैं.
Display.getRefreshRate() हमेशा ऐप्लिकेशन फ़्रेम रेट दिखाएगा, न कि डिसप्ले के फ़िज़िकल रीफ़्रेश रेट को. इससे ऐप्लिकेशन को फ़्रेम पेसिंग सही तरीके से करने में मदद मिलती है. Display.Mode.getRefreshRate() , पिछली रिलीज़ के लिए कॉम्पाइल किए जाने पर ऐप्लिकेशन फ़्रेम रेट दिखाएगा और Android 12 (एपीआई लेवल 31) से, यह फ़िज़िकल डिसप्ले का रीफ़्रेश रेट दिखाएगा.
|
DOWNSCALED
बदलाव का आईडी: 168419799
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
यह बदलाव, हर ऐप्लिकेशन के लिए बफ़र को कम करने के सभी बदलावों को कंट्रोल करता है. इस बदलाव को चालू करने से, स्केलिंग के लिए ये फ़ैक्टर लागू किए जा सकते हैं:
जब किसी ऐप्लिकेशन पैकेज के लिए यह बदलाव चालू किया जाता है, तो ऐप्लिकेशन का साइज़, स्केलिंग फ़ैक्टर के ज़रिए तय किए गए सबसे बड़े साइज़ पर बदल जाता है. उदाहरण के लिए, अगर 80% और 70%, दोनों (DOWNSCALE_80 और
DOWNSCALE_70 ) चालू हैं, तो 80% का इस्तेमाल किया जाएगा.
|
DOWNSCALE_30
बदलाव आईडी: 189970040
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 30% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_35
बदलाव का आईडी: 189969749
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 35% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_40
बदलाव का आईडी: 189970038
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 40% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_45
बदलाव आईडी: 189969782
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 45% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_50
बदलाव का आईडी: 176926741
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 50% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_55
बदलाव का आईडी: 189970036
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 55% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_60
बदलाव का आईडी: 176926771
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 60% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_65
बदलाव का आईडी: 189969744
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 65% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_70
बदलाव का आईडी: 176926829
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 70% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_75
बदलाव का आईडी: 189969779
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 75% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_80
बदलाव का आईडी: 176926753
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 80% वाले डिसप्ले पर काम कर रहा है.
|
DOWNSCALE_85
बदलाव का आईडी: 189969734
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 85% वाले डिसप्ले पर चल रहा है.
|
DOWNSCALE_90
बदलाव का आईडी: 182811243
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर DOWNSCALED भी चालू है, तो किसी पैकेज के लिए यह बदलाव चालू करने पर, ऐप्लिकेशन को यह मानना पड़ता है कि वह असल डिसप्ले के वर्टिकल और हॉरिज़ॉन्टल रिज़ॉल्यूशन के 90% वाले डिसप्ले पर चल रहा है.
|
DO_NOT_DOWNSCALE_TO_1080P_ON_TV
बदलाव आईडी: 157629738
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android TV के लिए बनाए गए ऐसे ऐप्लिकेशन जो Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करते हैं, वे किसी भी विंडो साइज़ को हैंडल कर सकते हैं. इनमें 1080p से ज़्यादा साइज़ वाली विंडो भी शामिल हैं.
Android के पुराने वर्शन को टारगेट करने वाले ऐप्लिकेशन को 1080 पिक्सल से ज़्यादा बड़े विंडो नहीं मिलते. इसलिए, ज़रूरत पड़ने पर उनके विंडो को 1080 पिक्सल पर डाउनस्केल कर दिया जाता है.
|
DROP_CLOSE_SYSTEM_DIALOGS
बदलाव का आईडी: 174664120
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.
ऐप्लिकेशन और सिस्टम के साथ इंटरैक्ट करते समय, उपयोगकर्ता के कंट्रोल को बेहतर बनाने के लिए, Android 12 के बाद से ACTION_CLOSE_SYSTEM_DIALOGS
इंटेंट ऐक्शन का इस्तेमाल नहीं किया जा सकता.
इस बदलाव के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन, सिस्टम डायलॉग बंद नहीं कर सकते लेख पढ़ें.
|
ENABLE_CHECKS_FOR_PRIVATE_FILES
बदलाव का आईडी: 172100307
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन, मीडिया प्रोवाइडर का इस्तेमाल करके निजी फ़ाइलें शामिल या अपडेट नहीं कर सकते.
|
ENABLE_DEFERRED_SCAN
बदलाव आईडी: 180326732
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
MediaProvider#update() के हिस्से के तौर पर ट्रिगर किए गए स्कैन को टालने के लिए, यह विकल्प चालू करें.
|
ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION
बदलाव का आईडी: 157233955
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, कॉल की स्थिति के बारे में क्वेरी करने और सूचना देने वाले एपीआई पर READ_PHONE_STATE सुरक्षा चालू करता है. जैसे, TelecomManager#getCallState ,
TelephonyManager.getCallStateForSubscription() , और
TelephonyCallback.CallStateListener .
|
ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION
बदलाव आईडी: 183407956
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, getPhoneAccount(PhoneAccountHandle) पर READ_PHONE_NUMBERS या READ_PRIVILEGED_PHONE_STATE
सुरक्षा मोड चालू करें.
|
ENABLE_INCLUDE_ALL_VOLUMES
बदलाव का आईडी: 182734110
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
हाल ही में अनमाउंट किए गए वॉल्यूम की फ़ाइलों की डेटाबेस लाइन को MediaProvider#query में शामिल करने के लिए, यह विकल्प चालू करें.
|
ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS
बदलाव का आईडी: 178209446
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
इस विकल्प को चालू करें, ताकि Manifest.permission.MANAGE_EXTERNAL_STORAGE
अनुमति वाले ऐप्लिकेशन, रॉ बाहरी स्टोरेज का ऐक्सेस पाने का अनुरोध कर सकें.
|
ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS
बदलाव का आईडी: 185199076
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, सटीक समय के बजाय किसी अन्य समय पर सूचना देने वाले सभी अलार्म के लिए, कम से कम विंडो साइज़ होना ज़रूरी है. यह साइज़ कुछ मिनट का होना चाहिए. असल में, जिन अलार्म के लिए कम विंडो की ज़रूरत होती है वे एग्ज़ैक्ट अलार्म जैसे ही होते हैं. साथ ही, इनके लिए दिए गए एपीआई का इस्तेमाल करना चाहिए, जैसे कि setExact(int, long, PendingIntent) . अगर अलार्म के लिए तय की गई विंडो छोटी है, तो सिस्टम उन्हें लंबा कर देगा.
|
ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES
बदलाव का आईडी: 142191088
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन को, उन सार्वजनिक नेटिव शेयर की गई लाइब्रेरी के लिए डिपेंडेंसी का एलान करना होगा जिन्हें डिवाइस बनाने वाली कंपनी ने अपने AndroidManifest.xml में uses-native-library टैग का इस्तेमाल करके तय किया है. अगर किसी भी डिपेंडेंसी को पूरा नहीं किया जा सकता, जैसे कि कोई डिपेंडेंसी मौजूद नहीं है, तो पैकेज मैनेजर ऐप्लिकेशन को इंस्टॉल नहीं करेगा. टैग में android:required एट्रिब्यूट का इस्तेमाल करके, डिपेंडेंसी को वैकल्पिक के तौर पर बताया जा सकता है. ऐसे में, डिपेंडेंसी को पूरा न करने पर भी इंस्टॉलेशन रुक नहीं जाएगा.
इंस्टॉल होने के बाद, ऐप्लिकेशन में सिर्फ़ वे नेटिव शेयर की गई लाइब्रेरी उपलब्ध होती हैं जिनके बारे में ऐप्लिकेशन मेनिफ़ेस्ट में बताया गया है. अगर किसी ऐसी नेटिव शेयर की गई लाइब्रेरी पर dlopen को कॉल किया जाता है जो ऐप्लिकेशन मेनिफ़ेस्ट में नहीं दिखती, तो यह कॉल पूरा नहीं होगा. भले ही, वह लाइब्रेरी डिवाइस पर मौजूद हो.
|
ENFORCE_STRICT_QUERY_BUILDER
बदलाव का आईडी: 143231523
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
चालू होने पर, SQLiteQueryBuilder
CalendarProvider2 क्वेरी के सभी विकल्पों की पुष्टि, नुकसान पहुंचाने वाले आर्ग्युमेंट के ख़िलाफ़ की जाती है.
|
FGS_BG_START_RESTRICTION_CHANGE_ID
बदलाव आईडी: 170668199
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह पाबंदी लगाई गई है कि ऐप्लिकेशन बैकग्राउंड में चलने के दौरान, फ़ोरग्राउंड सेवाएं कब शुरू कर सकते हैं.
|
FGS_START_EXCEPTION_CHANGE_ID
बदलाव आईडी: 174041399
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, अगर कोई ऐप्लिकेशन बैकग्राउंड में चलने के दौरान फ़ोरग्राउंड सेवा शुरू करने की कोशिश करता है, तो सिस्टम IllegalStateException दिखाता है.
|
बदलाव का आईडी: 156215187
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिवाइस के non-interactive होने पर InputConnection को पूरा करें.
अगर मौजूदा input method से चालू किया जाता है, तो डिवाइसों के इंटरैक्टिव न होने पर, मौजूदा इनपुट कनेक्शन
finished होगा.
अगर यह सुविधा चालू नहीं है, तो डिवाइसों के इंटरैक्टिव न होने पर, मौजूदा इनपुट कनेक्शन चुपचाप बंद हो जाएगा. साथ ही, डिवाइस फिर से इंटरैक्टिव होने पर, एक onFinishInput() और एक onStartInput() भेजा जाएगा.
|
FORCE_DISABLE_HEVC_SUPPORT
बदलाव आईडी: 174227820
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
किसी ऐप्लिकेशन को HEVC मीडिया की सुविधा के साथ काम करने से ज़बरदस्ती बंद करना.
ऐप्लिकेशन को अपने मेनिफ़ेस्ट में, काम करने वाले मीडिया की सुविधाओं के बारे में बताना चाहिए. हालांकि, इस फ़्लैग का इस्तेमाल करके, किसी ऐप्लिकेशन को HEVC के साथ काम न करने के लिए मजबूर किया जा सकता है. इससे, HEVC में कोड में बदले गए मीडिया को ऐक्सेस करते समय, ट्रांसकोडिंग को ज़बरदस्ती किया जा सकता है. इस फ़्लैग को सेट करने पर, ऐप्लिकेशन के लिए ओएस लेवल की डिफ़ॉल्ट सेटिंग बदल जाती है. यह डिफ़ॉल्ट रूप से बंद होता है. इसका मतलब है कि ओएस के डिफ़ॉल्ट विकल्पों को प्राथमिकता दी जाती है. अगर यह फ़्लैग और
FORCE_ENABLE_HEVC_SUPPORT , दोनों चालू हैं, तो ओएस दोनों फ़्लैग को अनदेखा करता है.
|
FORCE_ENABLE_HEVC_SUPPORT
बदलाव का आईडी: 174228127
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
किसी ऐप्लिकेशन को HEVC मीडिया की सुविधा के साथ काम करने के लिए, उसे ज़बरदस्ती चालू करना. ऐप्लिकेशन को, अपने मेनिफ़ेस्ट में यह बताना चाहिए कि वे किन मीडिया फ़ॉर्मैट के साथ काम करते हैं. हालांकि, इस फ़्लैग का इस्तेमाल करके किसी ऐप्लिकेशन को HEVC के साथ काम करने के लिए ज़बरदस्ती किया जा सकता है. इससे, HEVC में एन्कोड किए गए मीडिया को ऐक्सेस करते समय ट्रांसकोडिंग से बचा जा सकता है. इस फ़्लैग को सेट करने पर, ऐप्लिकेशन के लिए ओएस लेवल की डिफ़ॉल्ट सेटिंग बदल जाती है. यह डिफ़ॉल्ट रूप से बंद होता है. इसका मतलब है कि ओएस के डिफ़ॉल्ट सेटिंग को प्राथमिकता दी जाएगी. अगर यह फ़्लैग और FORCE_DISABLE_HEVC_SUPPORT , दोनों चालू हैं, तो ऑपरेटिंग सिस्टम दोनों फ़्लैग को अनदेखा कर देता है.
|
FORCE_NON_RESIZE_APP
बदलाव का आईडी: 181136395
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
जिन पैकेज पर यह लागू होता है उनका साइज़ नहीं बदला जा सकता.
|
FORCE_RESIZE_APP
बदलाव आईडी: 174042936
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
जिन पैकेज पर इसे लागू किया जाता है उनका साइज़ बदलने की सुविधा चालू कर देता है. हम सिर्फ़
फ़ुलस्क्रीन विंडो मोड में साइज़ बदलने की अनुमति देते हैं. हालांकि, हम ऐप्लिकेशन को
साइज़ बदलने की सुविधा वाले मल्टी-विंडो मोड में नहीं भेजते.
|
HIDE_PROP_ICUBINARY_DATA_PATH
बदलाव का आईडी: 171979766
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, android.icu.impl.ICUBinary.dataPath प्रॉपर्टी का ऐक्सेस हटा दिया जाता है.
|
IGNORE_ALLOW_BACKUP_IN_D2D
बदलाव आईडी: 183147249
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिवाइस-से-डिवाइस (D2D) माइग्रेशन के दौरान android:allowBackup को अनदेखा किया जाता है.
|
IGNORE_FULL_BACKUP_CONTENT_IN_D2D
बदलाव का आईडी: 180523564
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिवाइस-से-डिवाइस (D2D) ट्रांसफ़र के दौरान, android:fullBackupContent का इस्तेमाल करके तय किए गए शामिल करने और बाहर रखने के नियमों को अनदेखा कर दिया जाता है.
|
IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY
बदलाव का आईडी: 169273070
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, getSupportedLocales() अब डिफ़ॉल्ट सिस्टम भाषा के बजाय, भाषा सेट न होने पर, भाषा की खाली सूची दिखाता है.
|
IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE
बदलाव आईडी: 158482162
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, isBackupServiceActive() के लिए ज़रूरी BACKUP अनुमति, BackupManager में क्लाइंट-साइड के बजाय सेवा-साइड पर लागू की जाती है.
|
KEYSTORE_OPERATION_CREATION_MAY_FAIL
बदलाव का आईडी: 169897160
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
चालू होने पर, हो सकता है कि प्रूनिंग की नई रणनीति के मुताबिक,
पासकोड सेव करने की कार्रवाई पूरी न हो पाए. कीस्टोर इस धारणा के तहत काम करता था कि क्रिप्टोग्राफ़िक ऑपरेशन हमेशा काम करते हैं.
हालांकि, KeyMint बैकएंड में ऑपरेशन के लिए सीमित संख्या में स्लॉट होते हैं.
"अनगिनत" ऑपरेशन स्लॉट दिखते रहें, इसके लिए,
अगर कोई ऑपरेशन स्लॉट उपलब्ध न हो, तो कीस्टोर डेमन हाल ही में इस्तेमाल किए गए कम से कम ऑपरेशन को हटा देगा. इस वजह से, अच्छे ऑपरेशन को समय से पहले बंद किया जा सकता है. इस वजह से, AndroidKeystore को सेवा अस्वीकार करने (डीओएस) और अनचाहे लाइवलॉक के खतरे का सामना करना पड़ा. उदाहरण के लिए, अगर बिजली मैनेजमेंट के ऑप्टिमाइज़ेशन की वजह से एक ही समय पर कई ऐप्लिकेशन चालू हो जाते हैं और क्रिप्टो ऑपरेशन करने की कोशिश करते हैं, तो वे बिना कोई कार्रवाई किए ही एक-दूसरे के ऑपरेशन को बंद कर देते हैं.
लाइवलॉक से बाहर निकलने और डीओएस (डिस्ट्रिब्यूटेड सर्विस अटैक) के प्रयासों को रोकने के लिए, हमने क्लाइंट को हटाने की रणनीति में बदलाव किया है. अब यह उन क्लाइंट को प्राथमिकता देता है जो कुछ समय के लिए ऑपरेशन स्लॉट का इस्तेमाल करते हैं. इस वजह से, ऐसे एकल ऑपरेशन जो पांच सेकंड से ज़्यादा समय तक निष्क्रिय नहीं रहते, वे ज़्यादातर मामलों में बिना किसी रुकावट के पूरे हो जाते हैं. फ़ाइल सिस्टम को एन्क्रिप्ट करने से जुड़े कुछ ऐसे ऑपरेशन अब भी हैं जो इन ऑपरेशन को भी कम कर सकते हैं. हालांकि, ऐसे मामले बहुत कम होते हैं. प्रूनिंग की इस नई रणनीति के असर के तौर पर, अगर क्लाइंट के पास मौजूदा सभी ऑपरेशन की तुलना में प्रूनिंग की कम क्षमता है, तो अब डेटा फ़ीड बनाने की प्रोसेस पूरी नहीं हो पाएगी.
प्रूनिंग की रणनीति: सही उम्मीदवार ढूंढने के लिए,
हम कॉलर और हर मौजूदा ऑपरेशन के लिए, नुकसान का हिसाब लगाते हैं.
मालियस, प्रूनिंग पावर (कॉलर) या प्रूनिंग रेज़िस्टेंस (मौजूदा कार्रवाई) के उलट होता है. कॉलर के पास किसी ऑपरेशन को हटाने का विकल्प तब होता है, जब उसे ऐसा ऑपरेशन मिलता है जिसका नुकसान, उसके नुकसान से ज़्यादा हो. प्रूनिंग की रणनीति के बारे में ज़्यादा जानकारी के लिए, operation.rs को लागू करने का तरीका देखें.
Android 11 (एपीआई लेवल 30) और उससे पहले के वर्शन पर, KeyStore2, ऑपरेशन के लिए खाली स्लॉट पाने के लिए,
Keystore डेमन को पोल करेगा. Android 11 (एपीआई लेवल 30) और इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह अब भी ऐसा दिखेगा कि सिफर और हस्ताक्षर ऑब्जेक्ट को शुरू करने की प्रोसेस हमेशा पूरी हो जाती है. हालांकि, ऑपरेशन पूरा होने में ज़्यादा समय लग सकता है. Android के सभी वर्शन को, ऑपरेशन स्लॉट शेड्यूलिंग से फ़ायदा मिलता है. साथ ही, ऑपरेशन को पूरा करने की संभावना भी बढ़ जाती है.
|
LOCK_DOWN_CLOSE_SYSTEM_DIALOGS
बदलाव आईडी: 174664365
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, Intent.ACTION_CLOSE_SYSTEM_DIALOGS को तब तक नहीं भेजा जा सकता, जब तक ऐप्लिकेशन के पास android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS की अनुमति भी न हो. ध्यान दें कि यह #DROP_CLOSE_SYSTEM_DIALOGS के ज़्यादा पाबंदी वाले वर्शन का उदाहरण है. इसमें, ऐप्लिकेशन के Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने पर, Intent.ACTION_CLOSE_SYSTEM_DIALOGS इंटेंट भेजने की सुविधा बंद हो जाती है.
|
LOCK_DOWN_COLLAPSE_STATUS_BAR
बदलाव आईडी: 173031413
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, सुरक्षा से जुड़ी वजहों से, स्टेटस बार पैनल को छोटा करने के लिए Manifest.permission.STATUS_BAR अनुमति लेना ज़रूरी है. मैलवेयर इसका गलत इस्तेमाल करके, उपयोगकर्ता को अहम सूचनाएं ऐक्सेस करने से रोक रहा था.
|
LOW_POWER_EXCEPTIONS
बदलाव का आईडी: 168936375
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, कम बैटरी मोड के तौर पर मार्क किए गए सभी LocationRequest ऑब्जेक्ट, अपवाद के तौर पर काम करते हैं. ऐसा तब होता है, जब कॉल करने वाले के पास LOCATION_HARDWARE अनुमति न हो. ऐसे में, अनुरोध के कम बैटरी मोड वाले हिस्से को चुपचाप हटाने के बजाय, अपवाद के तौर पर काम किया जाता है.
|
MISSING_EXPORTED_FLAG
बदलाव आईडी: 150232615
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, जब भी कोई इंटेंट फ़िल्टर तय किया जाता है, तो android:exported एट्रिब्यूट के लिए साफ़ तौर पर वैल्यू दी जानी चाहिए.
इस बदलाव के बारे में ज़्यादा जानने के लिए, कॉम्पोनेंट को ज़्यादा सुरक्षित तरीके से एक्सपोर्ट करना लेख पढ़ें.
|
NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE
बदलाव आईडी: 207557677
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 32) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 32) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, AppZygote प्रोसेस और उसके वंशजों में नेटिव ढेर के ऐलोकेशन के लिए, सबसे अहम बाइट में नॉन-ज़ीरो टैग का इस्तेमाल किया जाता है.
इस बदलाव के बारे में ज़्यादा जानने के लिए, टैग किए गए पॉइंटर देखें.
|
NATIVE_HEAP_ZERO_INIT
बदलाव आईडी: 178038272
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
नेटिव हीप मेमोरी ऐलोकेशन को अपने-आप शून्य पर सेट करने की सुविधा चालू करें.
|
NATIVE_MEMTAG_ASYNC
बदलाव का आईडी: 135772972
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
इस प्रोसेस में, एसिंक्रोनस (ASYNC) मेमोरी टैग की जांच करने की सुविधा चालू करें. इस फ़्लैग का असर सिर्फ़ उस हार्डवेयर पर पड़ता है जिसमें ARM
मेमोरी टैगिंग एक्सटेंशन (एमटीई) काम करता है.
|
NATIVE_MEMTAG_SYNC
बदलाव का आईडी: 177438394
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
इस प्रोसेस में, सिंक्रोनस (SYNC) मेमोरी टैग की जांच करने की सुविधा चालू करता है. इस फ़्लैग का असर सिर्फ़ उस हार्डवेयर पर पड़ता है जिसमें ARM
मेमोरी टैगिंग एक्सटेंशन (एमटीई) काम करता है. अगर NATIVE_MEMTAG_ASYNC और यह विकल्प, दोनों चालू हैं, तो इस विकल्प को प्राथमिकता दी जाती है और सिंक मोड में एमटीई चालू हो जाता है.
|
NEVER_SANDBOX_DISPLAY_APIS
बदलाव का आईडी: 184838306
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
इस विकल्प के चालू होने पर, डिसप्ले एपीआई सैंडबॉक्सिंग की सुविधा, लेटरबॉक्स या एससीएम गतिविधि पर लागू नहीं होती. Display API, DisplayArea के बाउंड की जानकारी देते रहेंगे.
इस बदलाव के बारे में ज़्यादा जानने के लिए, Android के व्यवहार में हुए 12 बदलावों वाले पेज पर,
डिसप्ले के लिए इस्तेमाल किए जाने वाले उन तरीकों के बारे में जानकारी देखें जिन्हें बंद कर दिया गया है.
|
NOTIFICATION_CANCELLATION_REASONS
बदलाव का आईडी: 175319604
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
इससे, सूचना सुनने वाले लोग रद्द करने की नई वजहों को बेहतर तरीके से समझ पाते हैं.
|
NOTIFICATION_TRAMPOLINE_BLOCK
बदलाव आईडी: 167676448
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 को टारगेट करने वाले ऐप्लिकेशन, नोटिफ़िकेशन ट्रैंपोलिन के तौर पर सेवाओं या ब्रॉडकास्ट रिसीवर का इस्तेमाल नहीं कर सकते. इससे ऐप्लिकेशन की परफ़ॉर्मेंस और यूज़र एक्सपीरियंस को बेहतर बनाने में मदद मिलती है.
इस बदलाव के बारे में ज़्यादा जानने के लिए, सेवाओं या ब्रॉडकास्ट रिसीवर से सूचना ट्रैंपोलिन नहीं बनाए जा सकते लेख पढ़ें.
|
NULL_TELEPHONY_THROW_NO_CB
बदलाव आईडी: 182185642
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
इसका इस्तेमाल यह पता लगाने के लिए किया जाता है कि मौजूदा प्रोसेस के लिए, टारगेट किया गया SDK टूल का वर्शन Android 12 (एपीआई लेवल 31) या उसके बाद का है या नहीं.
यह इन तरीकों पर लागू होता है:
|
OVERRIDE_MIN_ASPECT_RATIO
बदलाव का आईडी: 174042980
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
यह बदलाव, उन सभी बदलावों को कंट्रोल करता है जो किसी खास आसपेक्ट रेशियो को लागू करते हैं. इस बदलाव को चालू करने पर, ये कम से कम आसपेक्ट रेशियो लागू किए जा सकते हैं:
जब किसी ऐप्लिकेशन पैकेज के लिए यह बदलाव चालू किया जाता है, तो ऐप्लिकेशन के मेनिफ़ेस्ट में दिए गए कम से कम आसपेक्ट रेशियो को, चालू किए गए सबसे बड़े आसपेक्ट रेशियो पर बदल दिया जाता है. ऐसा तब तक किया जाता है, जब तक कि ऐप्लिकेशन के मेनिफ़ेस्ट की वैल्यू ज़्यादा न हो.
|
OVERRIDE_MIN_ASPECT_RATIO_LARGE
बदलाव का आईडी: 180326787
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर OVERRIDE_MIN_ASPECT_RATIO भी चालू है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE के मुताबिक गतिविधि के कम से कम आसपेक्ट रेशियो को बड़ी वैल्यू पर सेट किया जाता है.
|
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
बदलाव का आईडी: 180326845
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए बंद है.
अगर OVERRIDE_MIN_ASPECT_RATIO भी चालू है, तो किसी पैकेज के लिए इस बदलाव को चालू करने पर, OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE के मुताबिक, गतिविधि का कम से कम आसपेक्ट रेशियो, मीडियम वैल्यू पर सेट हो जाता है.
|
PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED
बदलाव आईडी: 160794467
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, आपको अपने ऐप्लिकेशन के बनाए गए हर PendingIntent
ऑब्जेक्ट के लिए, म्यूटेबिलिटी की जानकारी देनी होगी. इस अतिरिक्त ज़रूरी शर्त से, आपके ऐप्लिकेशन की सुरक्षा बेहतर होती है.
इस बदलाव के बारे में ज़्यादा जानने के लिए, मंज़ूरी बाकी इनटेंट में बदलाव करने की जानकारी देनी होगी लेख पढ़ें.
|
PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT
बदलाव का आईडी: 165573442
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले एडमिन ऐप्लिकेशन, DevicePolicyManager.getParentProfileInstance(ComponentName) को कॉल करके मिले DevicePolicyManager इंस्टेंस पर पासवर्ड की क्वालिटी सेट करने के लिए, DevicePolicyManager.setPasswordQuality(ComponentName, int)
का इस्तेमाल नहीं कर सकते.
इसके बजाय, डिवाइस पर पासवर्ड से जुड़ी ज़रूरी शर्तें सेट करने के लिए, DevicePolicyManager.setRequiredPasswordComplexity(int) का इस्तेमाल करना चाहिए.
|
RATE_LIMIT_TOASTS
बदलाव का आईडी: 174840628
डिफ़ॉल्ट स्थिति: इस बदलाव को टॉगल नहीं किया जा सकता. इसे सिर्फ़ कंपैटबिलिटी फ़्रेमवर्क लॉग करता है.
इससे, Toast.show() कॉल की संख्या पर दर सीमित करने की सुविधा चालू होती है. इससे, उपयोगकर्ता को सीमित समय में बहुत ज़्यादा टॉस्ट दिखाने से रोका जा सकता है. अगर किसी तय समयावधि में, तय संख्या से ज़्यादा टॉस्ट दिखाने की कोशिश की जाती है, तो टॉस्ट को खारिज कर दिया जाता है.
|
REQUIRE_EXACT_ALARM_PERMISSION
बदलाव का आईडी: 171306433
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ऐप्लिकेशन के पास Manifest.permission.SCHEDULE_EXACT_ALARM
अनुमति होनी चाहिए. इससे, ऐप्लिकेशन सटीक अलार्म सेट करने के लिए, setExactAndAllowWhileIdle(int, long, PendingIntent)
और setAlarmClock(AlarmClockInfo, PendingIntent) जैसे किसी भी एपीआई का इस्तेमाल कर सकते हैं.
|
REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID
बदलाव का आईडी: 182478738
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyCallback.ActiveDataSubscriptionIdListener को कॉल करने के लिए, ऐप्लिकेशन के पास Manifest.permission.READ_PHONE_STATE की अनुमति होनी चाहिए.
|
REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO
बदलाव आईडी: 184323934
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyCallback.CellInfoListener को कॉल करने के लिए, ऐप्लिकेशन के पास Manifest.permission.READ_PHONE_STATE की अनुमति होनी चाहिए.
|
REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO
बदलाव का आईडी: 183164979
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, TelephonyCallback.DisplayInfoListener को कॉल करने के लिए, ऐप्लिकेशन के पास Manifest.permission.READ_PHONE_STATE की अनुमति होनी चाहिए.
|
RESTRICT_ADB_BACKUP
बदलाव आईडी: 171032338
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, adb backup अपने-आप चालू हो जाता है. ऐसा उन ऐप्लिकेशन के लिए होता है जो डीबग किए जा सकने वाले मोड में काम करते हैं (android:debuggable को true पर सेट किया गया हो). साथ ही, यह सुविधा किसी भी दूसरे ऐप्लिकेशन के लिए उपलब्ध नहीं होती.
|
RESTRICT_DOMAINS
बदलाव का आईडी: 175408749
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ऐप्लिकेशन लिंक की पुष्टि करने वाले एपीआई का अपडेट किया गया फ़ॉर्म ज़रूरी है. इस ज़रूरी शर्त का मतलब है कि ऐप्लिकेशन को किसी इंटेंट फ़िल्टर में डोमेन का एलान करना होगा. इसमें ये सभी चीज़ें शामिल होनी चाहिए:
android:autoVerify="true"
Intent.ACTION_VIEW
Intent.CATEGORY_BROWSABLE
Intet.CATEGORY_DEFAULT
- सिर्फ़
IntentFilter.SCHEME_HTTP और/या IntentFilter.SCHEME_HTTPS , कोई दूसरी स्कीम नहीं
Android के पिछले वर्शन में, Intent.CATEGORY_BROWSABLE की ज़रूरत नहीं थी. अन्य स्कीम इस्तेमाल की जा सकती थीं. साथ ही, किसी भी इंटेंट फ़िल्टर में autoVerify को true पर सेट करने पर, यह माना जाता था कि सभी इंटेंट फ़िल्टर autoVerify="true" पर सेट हैं.
|
SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE
बदलाव आईडी: 151105954
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह ज़रूरी है कि noteOp(String, int, String) ,
noteProxyOp(String, String) ,
और startOp(String, int, String) पर भेजे गए सभी attributionTags , पैकेज के मेनिफ़ेस्ट में बताए गए हों. मेनिफ़ेस्ट में, इन पैरामीटर को तरीकों के पैरामीटर के तौर पर बताया जाता है.
इस बदलाव को चालू करने के लिए, noteOp(String, int, String) को कॉल करने वाले पैकेज और पैरामीटर के तौर पर बताए गए पैकेज, दोनों के लिए यह बदलाव चालू होना चाहिए.
|
SELINUX_LATEST_CHANGES
बदलाव आईडी: 143539591
डिफ़ॉल्ट स्थिति: Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, SELinux में किए गए नए बदलावों के लिए ऑप्ट-इन करें. Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, इस बदलाव को बंद करने का कोई फ़ायदा नहीं है. शेयर किए गए उपयोगकर्ता आईडी का इस्तेमाल करने वाले ऐप्लिकेशन पर इसका कोई असर नहीं पड़ेगा.
|
SETTINGS_API_V2
बदलाव आईडी: 178111421
डिफ़ॉल्ट स्थिति: सभी ऐप्लिकेशन के लिए चालू है.
AndroidManifest.xml इंटेंट फ़िल्टर में autoVerify=true के तौर पर मार्क किए गए डोमेन की पुष्टि करने के लिए, उपयोगकर्ता की नई प्राथमिकता वाला एपीआई, अब तक मौजूदा प्लैटफ़ॉर्म की झलक में लागू नहीं किया गया है. फ़िलहाल, इस ChangeId को चालू करके और
adb shell pm set-app-links-user-selection और मिलते-जुलते निर्देशों का इस्तेमाल करके, उपयोगकर्ता की नई प्राथमिकता में हुए बदलावों की झलक देखी जा सकती है.
|
USE_SHORT_FGS_USAGE_INTERACTION_TIME
बदलाव आईडी: 183972877
डिफ़ॉल्ट स्थिति: यह Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए चालू है.
Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, यह तय करता है कि ऐप्लिकेशन के फ़ोरग्राउंड सेवा शुरू करने पर, स्टैंडबाय बकेट को ACTIVE पर ले जाने से पहले, कम टाइम आउट का इस्तेमाल किया जाए या नहीं.
|