ऐप्लिकेशन के व्यवहार में बदलाव: सभी ऐप्लिकेशन

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

Android 16 को टारगेट करने वाले ऐप्लिकेशन पर असर डालने वाले बदलावों की सूची भी देखें.

मुख्य फ़ंक्शन

Android 16 (एपीआई लेवल 36) में ये बदलाव शामिल हैं. इनसे Android सिस्टम की कई मुख्य सुविधाओं में बदलाव होता है या उन्हें बेहतर बनाया जाता है.

JobScheduler के कोटे से जुड़े ऑप्टिमाइज़ेशन

Android 16 से, हम सामान्य और तेज़ी से टास्क पूरा करने के लिए, रनटाइम कोटे में बदलाव कर रहे हैं. यह बदलाव इन बातों के आधार पर किया जा रहा है:

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

इस बदलाव का असर, WorkManager, JobScheduler, और DownloadManager का इस्तेमाल करके शेड्यूल किए गए टास्क पर पड़ता है. किसी जॉब को क्यों रोका गया, यह डीबग करने के लिए हमारा सुझाव है कि आप यह लॉग करें कि आपकी जॉब को WorkInfo.getStopReason() को कॉल करके क्यों रोका गया (JobScheduler जॉब के लिए, JobParameters.getStopReason() को कॉल करें).

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

हमारा यह भी सुझाव है कि Android 16 में लॉन्च किए गए नए JobScheduler#getPendingJobReasonsHistory एपीआई का इस्तेमाल करें. इससे आपको यह समझने में मदद मिलेगी कि कोई जॉब क्यों नहीं हुई.

टेस्ट करना

अपने ऐप्लिकेशन के व्यवहार की जांच करने के लिए, कुछ जॉब कोटा ऑप्टिमाइज़ेशन को तब तक के लिए बंद किया जा सकता है, जब तक ऐप्लिकेशन Android 16 डिवाइस पर चल रहा हो.

"सबसे ऊपर मौजूद स्थिति, नौकरी के रनटाइम कोटे का पालन करेगी" को लागू करने की सुविधा बंद करने के लिए, यह adb कमांड चलाएं:

adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_TOP_STARTED_JOBS APP_PACKAGE_NAME

"फ़ोरग्राउंड सेवा के साथ-साथ चल रही जॉब, जॉब के रनटाइम कोटा का पालन करेंगी" को लागू करने की सुविधा बंद करने के लिए, यह adb कमांड चलाएं:

adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_FGS_JOBS APP_PACKAGE_NAME

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

adb shell am set-standby-bucket APP_PACKAGE_NAME active|working_set|frequent|rare|restricted

आपका ऐप्लिकेशन, ऐप्लिकेशन स्टैंडबाय बकेट में किस लेवल पर है, यह जानने के लिए, यहां दिए गए adb कमांड का इस्तेमाल करके, अपने ऐप्लिकेशन का ऐप्लिकेशन स्टैंडबाय बकेट पता लगाया जा सकता है:

adb shell am get-standby-bucket APP_PACKAGE_NAME

बिना किसी टास्क वाले जॉब को रोके जाने की वजह

जब जॉब से जुड़े JobParameters ऑब्जेक्ट को गै़रबैज इकट्ठा करने की प्रोसेस के तहत हटा दिया जाता है, लेकिन जॉब पूरा होने का सिग्नल देने के लिए JobService#jobFinished(JobParameters, boolean) को कॉल नहीं किया जाता है, तो जॉब को छोड़ दिया जाता है. इससे पता चलता है कि ऐप्लिकेशन के बिना, शायद जॉब चल रहा हो और उसे फिर से शेड्यूल किया जा रहा हो.

JobScheduler पर निर्भर ऐप्लिकेशन, JobParameters ऑब्जेक्ट का सटीक रेफ़रंस नहीं रखते. साथ ही, टाइम आउट होने पर अब STOP_REASON_TIMEOUT के बजाय, STOP_REASON_TIMEOUT_ABANDONED को नौकरी के रुकने की नई वजह के तौर पर इस्तेमाल किया जाएगा.

अगर 'नया काम बंद होने की वजह' बार-बार दिखती है, तो सिस्टम, जॉब की फ़्रीक्वेंसी कम करने के लिए कदम उठाएगा.

ऐप्लिकेशन को, 'कार्रवाई रोकने की नई वजह' का इस्तेमाल करके, अधूरे रह गए टास्क का पता लगाना चाहिए और उनकी संख्या कम करनी चाहिए.

अगर आपने WorkManager, AsyncTask या DownloadManager का इस्तेमाल किया है, तो आप पर इसका कोई असर नहीं पड़ेगा. ऐसा इसलिए, क्योंकि ये एपीआई आपके ऐप्लिकेशन की ओर से जॉब लाइफ़साइकल को मैनेज करते हैं.

JobInfo#setImportantWhileForeground को पूरी तरह से बंद किया जा रहा है

JobInfo.Builder#setImportantWhileForeground(boolean) 方法用于在调度应用位于前台或暂时豁免于后台限制时指示作业的优先级。

自 Android 12(API 级别 31)起,此方法已废弃。从 Android 16 开始,它不再有效,系统会忽略调用此方法。

此功能移除也适用于 JobInfo#isImportantWhileForeground()。从 Android 16 开始,如果调用该方法,该方法会返回 false。

ऑर्डर किए गए ब्रॉडकास्ट की प्राथमिकता का दायरा अब ग्लोबल नहीं है

Android ऐप्लिकेशन, ब्रॉडकास्ट रिसीवर पर प्राथमिकताएं तय कर सकते हैं. इससे, यह कंट्रोल किया जा सकता है कि रिसीवर, ब्रॉडकास्ट को किस क्रम में पाएं और प्रोसेस करें. मेनिफ़ेस्ट में बताए गए रिसीवर के लिए, ऐप्लिकेशन प्राथमिकता तय करने के लिए android:priority एट्रिब्यूट का इस्तेमाल कर सकते हैं. वहीं, कॉन्टेक्स्ट के हिसाब से रजिस्टर किए गए रिसीवर के लिए, ऐप्लिकेशन प्राथमिकता तय करने के लिए IntentFilter#setPriority() एपीआई का इस्तेमाल कर सकते हैं. जब कोई ब्रॉडकास्ट भेजा जाता है, तो सिस्टम उसे पाने वालों को उनकी प्राथमिकता के हिसाब से डिलीवर करता है. इसमें, सबसे ज़्यादा प्राथमिकता वाले व्यक्ति से लेकर सबसे कम प्राथमिकता वाले व्यक्ति तक का क्रम होता है.

Android 16 में, अलग-अलग प्रोसेस में android:priority एट्रिब्यूट या IntentFilter#setPriority() का इस्तेमाल करके, ब्रॉडकास्ट डिलीवरी के क्रम की गारंटी नहीं दी जाएगी. ब्रॉडकास्ट की प्राथमिकताएं, सभी प्रोसेस के बजाय सिर्फ़ एक ही आवेदन की प्रोसेस में लागू होंगी.

साथ ही, ब्रॉडकास्ट की प्राथमिकताएं अपने-आप इस सीमा में सीमित हो जाएंगी (SYSTEM_LOW_PRIORITY + 1, SYSTEM_HIGH_PRIORITY - 1). सिर्फ़ सिस्टम कॉम्पोनेंट को SYSTEM_LOW_PRIORITY, SYSTEM_HIGH_PRIORITY को ब्रॉडकास्ट प्राथमिकता के तौर पर सेट करने की अनुमति होगी.

अगर आपका ऐप्लिकेशन इनमें से कोई एक काम करता है, तो उस पर असर पड़ सकता है:

  1. आपके ऐप्लिकेशन ने एक ही ब्रॉडकास्ट इंटेंट के साथ कई प्रोसेस का एलान किया है. साथ ही, प्राथमिकता के आधार पर उन इंटेंट को किसी खास क्रम में पाने की उम्मीद की है.
  2. आपके ऐप्लिकेशन की प्रोसेस, अन्य प्रोसेस के साथ इंटरैक्ट करती है. साथ ही, यह किसी खास क्रम में ब्रॉडकास्ट इंटेंट पाने की उम्मीद करती है.

अगर प्रोसेस को एक-दूसरे के साथ काम करना है, तो उन्हें अन्य चैनलों का इस्तेमाल करके कम्यूनिकेट करना चाहिए.

एआरटी में अंदरूनी बदलाव

Android 16 में, Android Runtime (ART) के नए अपडेट शामिल हैं. इनसे Android Runtime (ART) की परफ़ॉर्मेंस बेहतर होती है और Java की अन्य सुविधाओं के साथ काम करने में मदद मिलती है. Google Play के सिस्टम अपडेट की मदद से, ये सुधार Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन वाले एक अरब से ज़्यादा डिवाइसों के लिए भी उपलब्ध हैं.

ये बदलाव रिलीज़ होने के बाद, हो सकता है कि ART के इंटरनल स्ट्रक्चर पर निर्भर रहने वाली लाइब्रेरी और ऐप्लिकेशन कोड, Android 16 वाले डिवाइसों पर सही से काम न करें. साथ ही, ऐसा उन Android वर्शन पर भी हो सकता है जो Google Play के सिस्टम अपडेट के ज़रिए ART मॉड्यूल को अपडेट करते हैं.

डिवाइस के अंदर मौजूद स्ट्रक्चर (जैसे, नॉन-SDK इंटरफ़ेस) पर भरोसा करने से, काम करने से जुड़ी समस्याएं हमेशा हो सकती हैं. हालांकि, यह ज़रूरी है कि आप ऐसे कोड (या कोड वाली लाइब्रेरी) पर भरोसा न करें जो डिवाइस के अंदर मौजूद ART स्ट्रक्चर का इस्तेमाल करता हो. ऐसा इसलिए, क्योंकि ART में होने वाले बदलाव, डिवाइस पर चल रहे प्लैटफ़ॉर्म के वर्शन से जुड़े नहीं होते. साथ ही, ये बदलाव Google Play के सिस्टम अपडेट के ज़रिए एक अरब से ज़्यादा डिवाइसों पर लागू होते हैं.

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

16 केबी वाले पेज साइज़ के साथ काम करने वाला मोड

Android 15 में 16 केबी मेमोरी वाले पेजों के लिए सहायता जोड़ी गई है, ताकि प्लैटफ़ॉर्म की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया जा सके. Android 16 में कंपैटबिलिटी मोड जोड़ा गया है. इसकी मदद से, 4 केबी मेमोरी वाले पेजों के लिए बनाए गए कुछ ऐप्लिकेशन, 16 केबी मेमोरी वाले पेजों के लिए कॉन्फ़िगर किए गए डिवाइस पर चल सकते हैं.

अगर आपका ऐप्लिकेशन Android 16 या उसके बाद के वर्शन वाले डिवाइस पर चल रहा है और Android को पता चलता है कि आपके ऐप्लिकेशन में 4 केबी के अलाइन किए गए मेमोरी पेज हैं, तो यह अपने-आप कंपैटबिलिटी मोड का इस्तेमाल करता है और उपयोगकर्ता को सूचना वाला डायलॉग बॉक्स दिखाता है. बैकवर्ड कम्पैटिबिलिटी मोड को चालू करने के लिए, AndroidManifest.xml में android:pageSizeCompat प्रॉपर्टी को सेट करने पर, ऐप्लिकेशन लॉन्च होने पर डायलॉग नहीं दिखेगा. android:pageSizeCompat प्रॉपर्टी का इस्तेमाल करने के लिए, Android 16 SDK का इस्तेमाल करके अपना ऐप्लिकेशन कंपाइल करें.

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

कंपैटबिलिटी मोड का डायलॉग बॉक्स, जो तब दिखता है, जब सिस्टम को पता चलता है कि 4 केबी वाले पेज साइज़ के लिए अलाइन किया गया ऐप्लिकेशन, 16 केबी वाले पेज साइज़ के लिए अलाइन करने पर बेहतर तरीके से काम कर सकता है.

उपयोगकर्ता अनुभव और सिस्टम यूज़र इंटरफ़ेस (यूआई)

Android 16 (एपीआई लेवल 36) में ये बदलाव शामिल हैं. इनका मकसद, उपयोगकर्ताओं को ज़्यादा बेहतर और आसान अनुभव देना है.

परेशान करने वाली सुलभता सूचनाओं को बंद करना

Android 16 में, सुलभता से जुड़ी सूचनाओं का इस्तेमाल नहीं किया जा सकता. इन सूचनाओं के लिए, announceForAccessibility का इस्तेमाल किया जाता है या TYPE_ANNOUNCEMENT सुलभता इवेंट भेजे जाते हैं. इनकी वजह से, TalkBack और Android के स्क्रीन रीडर का इस्तेमाल करने वाले लोगों को अलग-अलग अनुभव मिल सकते हैं. साथ ही, Android की सहायक तकनीकों की मदद से, लोगों की ज़्यादा से ज़्यादा ज़रूरतों को पूरा करने के लिए, इन विकल्पों का इस्तेमाल किया जा सकता है.

विकल्पों के उदाहरण:

बंद किए गए announceForAccessibility एपीआई के रेफ़रंस दस्तावेज़ में, सुझाए गए विकल्पों के बारे में ज़्यादा जानकारी शामिल है.

तीन बटन वाले नेविगेशन की सुविधा

Android 16 为已正确迁移到预测性返回的应用的三按钮导航栏引入了预测性返回支持。长按返回按钮会启动预测性返回动画,让您预览返回滑动手势会打开的界面。

此行为适用于系统中支持预测性返回动画的所有区域,包括系统动画(返回主屏幕、跨任务和跨 activity)。

“三按钮”导航模式下的预测性返回动画。

थीम वाले ऐप्लिकेशन के आइकॉन अपने-आप जनरेट होने की सुविधा

Android 16 QPR 2 से, Android अपने-आप ऐप्लिकेशन के आइकॉन को थीम के हिसाब से बदल देगा, ताकि होम स्क्रीन पर एक जैसा अनुभव मिले. ऐसा तब होता है, जब कोई ऐप्लिकेशन थीम वाला आइकॉन नहीं देता. ऐप्लिकेशन, थीम वाले ऐप्लिकेशन के आइकॉन के डिज़ाइन को कंट्रोल कर सकते हैं. इसके लिए, वे अडैप्टिव आइकॉन में मोनोक्रोम लेयर शामिल करते हैं. साथ ही, Android Studio में झलक देख सकते हैं कि उनका ऐप्लिकेशन आइकॉन कैसा दिखेगा.

डिवाइस के नाप या आकार

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

वर्चुअल डिवाइस के मालिक के लिए ओवरराइड

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

फ़ोन पर वर्चुअल डिवाइस का मालिक, वर्चुअल डिवाइस बनाता है. यह डिवाइस, ऐप्लिकेशन को रिमोट डिसप्ले पर प्रोजेक्ट करता है.

हर ऐप्लिकेशन के लिए सेटिंग में बदलाव करना

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

नुकसान पहुंचा सकने वाले आम बदलाव

Android 16 के काम करने के तरीके से, कार के डिसप्ले या Chromebook जैसी बड़ी स्क्रीन वाले डिवाइसों पर आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) पर असर पड़ सकता है. खास तौर पर, पोर्ट्रेट ओरिएंटेशन में छोटी स्क्रीन के लिए डिज़ाइन किए गए लेआउट पर असर पड़ सकता है. अपने ऐप्लिकेशन को सभी डिवाइसों के हिसाब से अडैप्टिव बनाने का तरीका जानने के लिए, अडैप्टिव लेआउट के बारे में जानकारी देखें.

संदर्भ

कंपैनियन ऐप्लिकेशन स्ट्रीमिंग

सुरक्षा

Android 16 (एपीआई लेवल 36) में ऐसे बदलाव शामिल हैं जो सिस्टम की सुरक्षा को बेहतर बनाते हैं. इससे ऐप्लिकेशन और उपयोगकर्ताओं को नुकसान पहुंचाने वाले ऐप्लिकेशन से सुरक्षित रखने में मदद मिलती है.

इंटेंट रीडायरेक्शन हमलों से बेहतर सुरक्षा

Android 16, सामान्य Intent रीडायरेक्शन हमलों के ख़िलाफ़ डिफ़ॉल्ट सुरक्षा देता है. इसके लिए, कम से कम ज़रूरी शर्तों को पूरा करना होता है और डेवलपर को कुछ बदलाव करने होते हैं.

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

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

इंटेंट रीडायरेक्शन हैंडलिंग से ऑप्ट आउट करना

Android 16 में एक नया एपीआई लॉन्च किया गया है. इसकी मदद से, ऐप्लिकेशन लॉन्च के समय सुरक्षा से जुड़ी सुविधाओं से ऑप्ट आउट कर सकते हैं. ऐसा कुछ खास मामलों में ज़रूरी हो सकता है. जैसे, जब डिफ़ॉल्ट सुरक्षा सेटिंग, ऐप्लिकेशन के सही इस्तेमाल में रुकावट डालती हो.

Android 16 (एपीआई लेवल 36) SDK या इसके बाद के वर्शन के लिए कंपाइल किए जा रहे ऐप्लिकेशन के लिए

Intent ऑब्जेक्ट पर, removeLaunchSecurityProtection() तरीके का सीधे तौर पर इस्तेमाल किया जा सकता है.

val i = intent
val iSublevel: Intent? = i.getParcelableExtra("sub_intent")
iSublevel?.removeLaunchSecurityProtection() // Opt out from hardening
iSublevel?.let { startActivity(it) }
Android 15 (एपीआई लेवल 35) या इससे पहले के वर्शन के लिए कंपाइल किए गए ऐप्लिकेशन के लिए

हालांकि, हमारा सुझाव है कि आप ऐसा न करें, लेकिन removeLaunchSecurityProtection() तरीके को ऐक्सेस करने के लिए, रिफ़्लेक्शन का इस्तेमाल किया जा सकता है.

val i = intent
val iSublevel: Intent? = i.getParcelableExtra("sub_intent", Intent::class.java)
try {
    val removeLaunchSecurityProtection = Intent::class.java.getDeclaredMethod("removeLaunchSecurityProtection")
    removeLaunchSecurityProtection.invoke(iSublevel)
} catch (e: Exception) {
    // Handle the exception, e.g., log it
} // Opt-out from the security hardening using reflection
iSublevel?.let { startActivity(it) }

कंपैनियन ऐप्लिकेशन को अब डिवाइस खोजने की प्रोसेस के टाइम आउट होने की सूचना नहीं दी जाती

Android 16 在配套设备配对流程期间引入了一种新行为,以防恶意应用侵犯用户的位置信息隐私。在 Android 16 上运行的所有配套应用都不再直接通过 RESULT_DISCOVERY_TIMEOUT 收到发现超时通知。而是通过可视对话框通知用户超时事件。当用户关闭对话框时,系统会通过 RESULT_USER_REJECTED 提醒应用关联失败。

搜索时长也从原来的 20 秒延长到了 30 秒,并且用户可以在搜索期间的任何时间停止设备发现。如果在开始搜索的前 20 秒内发现了至少 1 部设备,CDM 会停止搜索其他设备。

कनेक्टिविटी

Android 16 (एपीआई लेवल 36) में, ब्लूटूथ स्टैक में ये बदलाव किए गए हैं. इनसे सहायक डिवाइसों के साथ कनेक्टिविटी को बेहतर बनाया जा सकता है.

बॉन्ड लॉस को मैनेज करने की सुविधा को बेहतर बनाया गया

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

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