Android 6.0 के बदलाव

Android 6.0 (एपीआई लेवल 23) में नई सुविधाओं और क्षमताओं के साथ-साथ, कई तरह के सिस्टम और एपीआई के काम करने के तरीके में बदलाव. इस दस्तावेज़ में हाइलाइट कुछ अहम बदलावों के बारे में बताया है जिन्हें आपको अपने ऐप्लिकेशन के बारे में समझना चाहिए और जिन पर ध्यान देना चाहिए.

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

रनटाइम की अनुमतियां

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

Android 6.0 (एपीआई लेवल 23) या उसके बाद के वर्शन को टारगेट करने वाले अपने ऐप्लिकेशन पर, पक्का करें कि आपने ऐप्लिकेशन को देखा और उसके लिए अनुरोध किया हो अनुमतियां दी जाएंगी. आपके ऐप्लिकेशन को अनुमति मिली है या नहीं, यह पता करने के लिए नया checkSelfPermission() तरीका. अनुमति का अनुरोध करने के लिए, नए सदस्य को कॉल करें requestPermissions() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीका. भले ही, आपका ऐप्लिकेशन Android 6.0 (एपीआई लेवल 23) को टारगेट न कर रहा हो, लेकिन आपको इसके तहत अपने ऐप्लिकेशन की जांच करनी चाहिए पर भी यह नियम लागू होगा.

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

बैटरी बचाएं और ऐप स्टैंडबाय

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

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

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

Apache एचटीटीपी क्लाइंट हटाना

Android 6.0 रिलीज़, Apache एचटीटीपी क्लाइंट के साथ काम नहीं करता. अगर आपका ऐप्लिकेशन इस क्लाइंट का इस्तेमाल कर रहा है और अगर Android 2.3 (एपीआई लेवल 9) या इसके बाद के वर्शन को टारगेट करता है, तो HttpURLConnection क्लास का इस्तेमाल करें आज़माएं. यह एपीआई ज़्यादा बेहतर तरीके से काम करता है, क्योंकि यह ट्रांसपैरंट कंप्रेशन के ज़रिए नेटवर्क के इस्तेमाल को कम करता है और रिस्पॉन्स को कैश मेमोरी में सेव करने के साथ-साथ ऊर्जा की खपत को कम करता है. Apache HTTP API का इस्तेमाल जारी रखने के लिए, को पहले आपकी build.gradle फ़ाइल में, कंपाइल-टाइम डिपेंडेंसी का एलान करना होगा:

android {
    useLibrary 'org.apache.http.legacy'
}

बोरिंगएसएसएल

Android, OpenGL से दूर जा रहा है बोरिंगएसएसएल लाइब्रेरी. अगर आपके ऐप्लिकेशन में Android एनडीके (NDK) का इस्तेमाल किया जा रहा है, तो क्रिप्टोग्राफ़िक लाइब्रेरी से लिंक न करें जो NDK API का हिस्सा नहीं हैं, जैसे कि libcrypto.so और libssl.so. ये लाइब्रेरी, सार्वजनिक एपीआई नहीं हैं. साथ ही, ये सभी रिलीज़ और डिवाइसों में, बिना किसी सूचना के बदली या बंद हो सकती हैं. इसके अलावा, आपसे सुरक्षा से जुड़े जोखिमों की आशंका भी हो सकती है. इसके बजाय, अपने नेटिव कोड का इस्तेमाल करके, JNI के ज़रिए Java क्रिप्टोग्राफ़ी एपीआई को कॉल करें या अपनी पसंद की क्रिप्टोग्राफ़ी लाइब्रेरी.

हार्डवेयर आइडेंटिफ़ायर का ऐक्सेस

उपयोगकर्ताओं के डेटा को बेहतर तरीके से सुरक्षित रखने के लिए, हमने Android का नया वर्शन रिलीज़ किया है. प्रोग्राम के हिसाब से, डिवाइस के लोकल हार्डवेयर आइडेंटिफ़ायर का ऐक्सेस हटा देता है जैसे, वाई-फ़ाई और ब्लूटूथ एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन. कॉन्टेंट बनाने WifiInfo.getMacAddress() और BluetoothAdapter.getAddress() तरीका अब 02:00:00:00:00:00 का कॉन्स्टेंट वैल्यू दिखाता है.

ब्लूटूथ और वाई-फ़ाई स्कैन के ज़रिए, आस-पास मौजूद बाहरी डिवाइसों के हार्डवेयर आइडेंटिफ़ायर ऐक्सेस करने के लिए, अब आपके ऐप्लिकेशन में ACCESS_FINE_LOCATION या ACCESS_COARSE_LOCATION अनुमतियां:

ध्यान दें: जब Android 6.0 (एपीआई लेवल 23) पर चल रहे डिवाइस पर, बैकग्राउंड वाई-फ़ाई या ब्लूटूथ स्कैन करने के लिए, बाहरी डिवाइस को यह कार्रवाई इस तरह दिखेगी किसी भी MAC पते से शुरू किया गया है.

सूचनाएं

यह रिलीज़, Notification.setLatestEventInfo() तरीके को हटा देती है. इसका इस्तेमाल करें सूचनाएं बनाने के लिए, Notification.Builder क्लास का इस्तेमाल करें. अपडेट करने के लिए नोटिफ़िकेशन को बार-बार, Notification.Builder इंस्टेंस का फिर से इस्तेमाल करें. कॉल करें पाने का build() तरीका Notification इंस्टेंस अपडेट किए गए.

adb shell dumpsys notification निर्देश अब आपकी सूचना के टेक्स्ट को प्रिंट नहीं करता है. टेक्स्ट को प्रिंट करने के लिए, adb shell dumpsys notification --noredact कमांड इस्तेमाल करें सूचना ऑब्जेक्ट में.

ऑडियो मैनेजर के बदलाव

वॉल्यूम को सीधे सेट करना या AudioManager के ज़रिए खास स्ट्रीम को म्यूट करना क्लास अब काम नहीं करती है. setStreamSolo() विधि बहिष्कृत कर दी गई है और आपको requestAudioFocus() अपना पसंदीदा तरीका चुनें. इसी तरह, setStreamMute() तरीका है बंद किया गया है; इसके बजाय, adjustStreamVolume() तरीके को कॉल करें और दिशा मान को पास करें ADJUST_MUTE या ADJUST_UNMUTE.

लेख चयन

फ़्लोटिंग टूलबार में टेक्स्ट चुनने की नई सुविधाएं दिख रही हैं

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

अगर आपको टेक्स्ट चुनने के लिए फ़्लोटिंग टूलबार लागू करना है, तो अपने मौजूदा टेक्स्ट में ये बदलाव करें ऐप्लिकेशन:

  1. अपने View या Activity ऑब्जेक्ट में, अपना इनके ActionMode कॉल startActionMode(Callback, ActionMode.TYPE_FLOATING) के लिए startActionMode(Callback).
  2. ActionMode.Callback के मौजूदा तरीके को लागू करें और इसे बढ़ाएं अगर आपके पास इन फ़ॉर्मैट की फ़ाइल नहीं है, तो ActionMode.Callback2 बटन का इस्तेमाल करें.
  3. onGetContentRect() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कॉन्टेंट Rect ऑब्जेक्ट के निर्देशांक देने का तरीका (जैसे कि टेक्स्ट चुनने का रेक्टैंगल).
  4. अगर आयताकार पोज़िशनिंग अब मान्य नहीं है और सिर्फ़ यही एलिमेंट अमान्य है, तो invalidateContentRect() तरीके को कॉल करें.

यदि आप का उपयोग कर रहे हैं Android सपोर्ट लाइब्रेरी वर्शन 22.2 में, ध्यान रखें कि फ़्लोटिंग टूलबार पुराने सिस्टम के साथ काम करने की सुविधा देती है. appcompat इसके हिसाब से ActionMode ऑब्जेक्ट को कंट्रोल करता है डिफ़ॉल्ट. यह फ़्लोटिंग टूलबार को दिखने से रोकता है. चालू करने के लिए इसमें ActionMode की सहायता AppCompatActivity, कॉल करें getDelegate(), इसके बाद कॉल करें वापस की गई फ़्लाइट पर setHandleNativeActionModesEnabled() AppCompatDelegate ऑब्जेक्ट और इनपुट सेट करें पैरामीटर को false में बदलें. यह कॉल, इन आइटम के लिए ActionMode ऑब्जेक्ट का कंट्रोल दिखाता है मदद ली जा सकती है. Android 6.0 (एपीआई लेवल 23) पर चलने वाले डिवाइसों के लिए, यह फ़्रेमवर्क ActionBar या फ़्लोटिंग टूलबार मोड, जब डिवाइस चल रहे हों Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन में, सिर्फ़ ActionBar मोड समर्थित हैं.

ब्राउज़र बुकमार्क में बदलाव

यह रिलीज़ वैश्विक बुकमार्क के लिए समर्थन खत्म करती है. कॉन्टेंट बनाने android.provider.Browser.getAllBookmarks() और android.provider.Browser.saveBookmark() तरीकों को अब हटा दिया जाता है. इसी तरह, READ_HISTORY_BOOKMARKS और WRITE_HISTORY_BOOKMARKS अनुमतियां हटा दी जाती हैं. अगर आपका ऐप्लिकेशन, Android 6.0 (एपीआई लेवल 23) या उसके बाद के वर्शन को टारगेट करता है, तो ऐक्सेस न करें ग्लोबल प्रोवाइडर के बुकमार्क पर क्लिक करें या बुकमार्क अनुमतियों का इस्तेमाल करें. इसके बजाय, आपके ऐप्लिकेशन को बुकमार्क डेटा आंतरिक रूप से.

Android कीस्टोर में हुए बदलाव

इस रिलीज़ के साथ, Android कीस्टोर की सेवा देने वाली कंपनी अब काम नहीं करती डीएसए. ईसीडीएसए अब भी काम करता है.

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

वाई-फ़ाई और नेटवर्किंग के बदलाव

यह रिलीज़ वाई-फ़ाई और नेटवर्किंग एपीआई के व्यवहार में ये बदलाव पेश करता है.

  • आपके ऐप्लिकेशन अब सिर्फ़ WifiConfiguration ऑब्जेक्ट की स्थिति बदल सकते हैं को भी बनाए रखता है. आपको बदलाव करने या मिटाने की अनुमति नहीं है WifiConfiguration ऑब्जेक्ट, जिन्हें उपयोगकर्ता या दूसरे ऐप्लिकेशन ने बनाया है.
  • पहले, अगर किसी ऐप्लिकेशन ने enableNetwork() disableAllOthers=true सेटिंग, डिवाइस को अन्य नेटवर्क से डिसकनेक्ट किया गया, जैसे कि मोबाइल डेटा. इस रिलीज़ में, डिवाइस अब ऐसे दूसरे नेटवर्क से डिसकनेक्ट नहीं होता. अगर आपने आपके ऐप्लिकेशन का targetSdkVersion, “20” या इससे कम है. इसे चुने गए देश/इलाके में पिन किया गया है वाई-फ़ाई नेटवर्क. अगर आपके ऐप्लिकेशन का targetSdkVersion “21” या उससे ज़्यादा है, तो Multinetwork API (जैसे कि openConnection(), bindSocket() और नया bindProcessToNetwork() तरीका) का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि इसके नेटवर्क ट्रैफ़िक को चुने गए नेटवर्क पर भेजा जाए.

कैमरा सेवा में बदलाव किए गए

इस रिलीज़ में, कैमरा सेवा में शेयर किए गए संसाधनों को ऐक्सेस करने के मॉडल में बदलाव किया गया है पिछले “पहले आएं, पहले पाएं” वाले ऐक्सेस मॉडल से इस मॉडल को ऐक्सेस करें प्रक्रियाओं को प्राथमिकता दी जाती है. सेवा के काम करने के तरीके में हुए बदलावों में ये शामिल हैं:

  • कैमरा सबसिस्टम संसाधनों की ऐक्सेस, जिनमें कैमरा डिवाइस को खोलना और कॉन्फ़िगर करना भी शामिल है यह अवॉर्ड, क्लाइंट आवेदन की प्रक्रिया की “प्राथमिकता” के आधार पर दिया जाता है. इसके साथ ऐप्लिकेशन प्रोसेस उपयोगकर्ता को दिखने वाली या फ़ोरग्राउंड गतिविधियों को आम तौर पर ज़्यादा प्राथमिकता दी जाती है. इससे कैमरे को बेहतर बनाने में मदद मिलती है हासिल करना और उसका इस्तेमाल करना ज़्यादा भरोसेमंद होता है.
  • कम प्राथमिकता वाले ऐप्लिकेशन के लिए चालू कैमरा क्लाइंट को ज़्यादा प्राथमिकता मिलने पर “हटा” दिया जा सकता है ऐप्लिकेशन कैमरे का इस्तेमाल करने की कोशिश करता है. अब काम नहीं करने वाले Camera एपीआई में, इससे यह नतीजा मिलता है onError() निकाले गए क्लाइंट की मांग की. Camera2 एपीआई में, इससे यह मिलता है onDisconnected() हटाए गए क्लाइंट के लिए कॉल किया जा रहा है.
  • सही कैमरा हार्डवेयर वाले डिवाइसों पर, अलग-अलग ऐप्लिकेशन प्रोसेस ये काम कर सकती हैं अलग-अलग कैमरा डिवाइसों को एक साथ खोलकर इस्तेमाल कर सकते हैं. हालांकि, एक से ज़्यादा प्रोसेस का इस्तेमाल ऐसे मामलों में, जहां एक साथ ऐक्सेस करने से परफ़ॉर्मेंस या क्षमताओं में बहुत कमी आती है किसी भी खुले कैमरे वाले डिवाइस का पता अब लगाया जाता है और कैमरा सेवा की ओर से उसे अनुमति नहीं दी जाती है. यह बदलाव कम प्राथमिकता वाले क्लाइंट को “हटाना” हो सकता है, भले ही कोई दूसरा ऐप्लिकेशन सीधे तौर पर उसी कैमरा डिवाइस को ऐक्सेस करने की कोशिश की जा रही है.
  • मौजूदा उपयोगकर्ता को बदलने से, पिछले उपयोगकर्ता खाते के ऐप्लिकेशन में चालू कैमरा क्लाइंट आ जाते हैं वेबसाइट से हटाया जाना चाहिए. कैमरे को सिर्फ़ उन उपयोगकर्ता की प्रोफ़ाइलों का ऐक्सेस मिल सकता है जिनका मालिकाना हक, डिवाइस के मौजूदा उपयोगकर्ता के पास है. उदाहरण के लिए, इसका मतलब यह है कि “मेहमान” खाता इस्तेमाल करने का अधिकार सुरक्षित नहीं है ऐसी प्रोसेस जो किसी दूसरे खाते पर जाने पर, कैमरा सबसिस्टम का इस्तेमाल करती हैं.

रनटाइम

ART रनटाइम अब newInstance() तरीका. यह में बदलाव, उस समस्या को ठीक कर देता है जहां Delvik पिछले वर्शन में गलत तरीके से ऐक्सेस नियमों की जांच कर रहा था. अगर आपका ऐप्लिकेशन newInstance() तरीका और आप ऐक्सेस जांच को बदलना चाहते हैं, तो इनपुट के साथ setAccessible() तरीका पैरामीटर को true पर सेट किया गया है. अगर आपका ऐप्लिकेशन v7 appcompat लाइब्रेरी या v7 रीसाइकलरव्यू लाइब्रेरी, इन लाइब्रेरी के नए वर्शन का इस्तेमाल करने के लिए, आपको अपना ऐप्लिकेशन अपडेट करना होगा. अगर ऐसा नहीं है, तो पक्का करें कि एक्सएमएल से रेफ़र की गई सभी कस्टम क्लास को अपडेट किया जाता है, ताकि उनके क्लास कंस्ट्रक्टर ऐक्सेस किए जा सकें.

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

dlopen(3) RTLD_LOCAL फ़्लैग अब सही तरीके से लागू किया गया है. ध्यान दें कि RTLD_LOCAL डिफ़ॉल्ट है. इसलिए, dlopen(3) को किए गए ऐसे कॉल जो खास तौर पर इस्तेमाल नहीं किए गए हैं RTLD_LOCAL पर असर पड़ेगा (जब तक कि आपके ऐप्लिकेशन ने साफ़ तौर पर RTLD_GLOBAL का इस्तेमाल न किया हो). के साथ RTLD_LOCAL, बाद के कॉल से लोड की गई लाइब्रेरी में सिंबल उपलब्ध नहीं कराए जाएंगे dlopen(3) (DT_NEEDED एंट्री में रेफ़र किए जाने के उलट).

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

APK की पुष्टि

यह प्लैटफ़ॉर्म अब APK की सख्त पुष्टि करता है. अगर किसी फ़ाइल को मेनिफ़ेस्ट में बताए गए हैं, लेकिन APK में मौजूद नहीं हैं. किसी APK पर फिर से हस्ताक्षर किया जाना चाहिए, अगर कॉन्टेंट हटा दिया जाता है.

यूएसबी कनेक्शन

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

Android for Work के बदलाव

इस रिलीज़ में Android for Work के लिए निम्न व्यवहार बदलाव शामिल हैं:

  • निजी कॉन्टेक्स्ट में संपर्कों के साथ काम करें. Google डायलर जब उपयोगकर्ता पिछले कॉल देखता है, तब कॉल लॉग में ऑफ़िस के संपर्क दिखते हैं. सेटिंग setCrossProfileCallerIdDisabled() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है को true, Google डायलर कॉल लॉग में वर्क प्रोफ़ाइल के संपर्कों को छिपा देता है. काम से जुड़े संपर्कों के नाम ब्लूटूथ के ज़रिए डिवाइसों पर आपके निजी संपर्कों के साथ सिर्फ़ तब दिखाया जाएगा, जब आपने setBluetoothContactSharingDisabled() को false पर सेट किया है. डिफ़ॉल्ट रूप से, यह true पर सेट होता है.
  • वाई-फ़ाई कॉन्फ़िगरेशन हटाना: प्रोफ़ाइल के मालिक की ओर से जोड़े गए वाई-फ़ाई कॉन्फ़िगरेशन (उदाहरण के लिए, addNetwork() तरीका) को हटा दिया जाता है.
  • वाई-फ़ाई कॉन्फ़िगरेशन लॉकडाउन: इसकी मदद से बनाया गया कोई भी वाई-फ़ाई कॉन्फ़िगरेशन किसी सक्रिय डिवाइस के मालिक को उपयोगकर्ता के ज़रिए अब बदला या मिटाया नहीं जा सकता अगर WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN गैर-शून्य है. उपयोगकर्ता अब भी अपने वाई-फ़ाई कॉन्फ़िगरेशन बना सकते हैं और उनमें बदलाव कर सकते हैं. ऐक्टिव डिवाइस मालिकों के पास किसी भी वाई-फ़ाई कॉन्फ़िगरेशन में बदलाव करने या उसे हटाने का खास अधिकार होता है. इनमें ये कॉन्फ़िगरेशन शामिल हैं जिन्हें उसने नहीं बनाया है.
  • Google खाता जोड़ने के ज़रिए डिवाइस नीति कंट्रोलर डाउनलोड करें: जब Google जिस खाते के लिए डिवाइस नीति कंट्रोलर (DPC) ऐप्लिकेशन से मैनेजमेंट की ज़रूरत होती है उसे डिवाइस में जोड़ दिया गया है मैनेज नहीं किया जा सकता, तो खाता जोड़ें फ़्लो अब उपयोगकर्ता को सही WPC के लिए किया जाना चाहिए. यह व्यवहार, इसके ज़रिए जोड़े गए खातों पर भी लागू होता है सेटिंग > खाते और शुरुआती डिवाइस सेटअप विज़र्ड में.
  • DevicePolicyManager एपीआई के खास व्यवहार में बदलाव:
    • कॉल setCameraDisabled() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है विधि का असर सिर्फ़ कॉल करने वाले उपयोगकर्ता के कैमरे पर पड़ता है; उसे मैनेज की जा रही प्रोफ़ाइल से कॉल करने का मतलब नहीं है मुख्य उपयोगकर्ता पर चलने वाले कैमरा ऐप्लिकेशन पर असर डाल सकते हैं.
    • इसके अलावा, setKeyguardDisabledFeatures() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है यह तरीका अब प्रोफ़ाइल के मालिकों के साथ-साथ डिवाइस के मालिकों के लिए भी उपलब्ध है.
    • प्रोफ़ाइल का मालिक, कीगार्ड से ये पाबंदियां सेट कर सकता है:
      • KEYGUARD_DISABLE_TRUST_AGENTS और KEYGUARD_DISABLE_FINGERPRINT, जो प्रोफ़ाइल के पैरंट उपयोगकर्ता के लिए कीगार्ड सेटिंग.
      • KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS, जो इसका असर सिर्फ़, मैनेज की जा रही प्रोफ़ाइल में ऐप्लिकेशन से जनरेट होने वाली सूचनाओं पर पड़ता है.
    • DevicePolicyManager.createAndInitializeUser() और DevicePolicyManager.createUser() के तरीके अब काम नहीं करते.
    • setScreenCaptureDisabled() यह तरीका अब सहायक स्ट्रक्चर को तब भी ब्लॉक करता है, जब किसी उपयोगकर्ता का कोई ऐप्लिकेशन फ़ोरग्राउंड में होता है.
    • EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अब डिफ़ॉल्ट रूप से SHA-256 पर सेट हो जाता है. SHA-1 अब भी पुराने सिस्टम के साथ काम करता है, लेकिन इसे हटा दिया जाएगा आने वाले समय में. EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अब सिर्फ़ SHA-256 को स्वीकार किया जाता है.
    • Android 6.0 (एपीआई लेवल 23) में मौजूद डिवाइस शुरू करने वाले एपीआई को अब हटा दिया गया है.
    • एनएफ़सी बंप को हटाने के लिए, EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS को हटा दिया गया है प्रावधान करने से, फ़ैक्ट्री रीसेट किए गए डिवाइस को प्रोग्राम के हिसाब से अनलॉक नहीं किया जा सकता.
    • अब आप EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE का इस्तेमाल कर सकते हैं मैनेज किए जा रहे डिवाइस के एनएफ़सी के प्रावधान के दौरान, डिवाइस के मालिक के ऐप्लिकेशन को डेटा भेजने के लिए अतिरिक्त समय.
    • Android for Work API को M रनटाइम अनुमतियों के लिए ऑप्टिमाइज़ किया गया है, जिनमें वर्क प्रोफ़ाइल, असिस्ट लेयर और अन्य एलिमेंट. DevicePolicyManager की अनुमति वाले नए एपीआई काम नहीं करते का असर प्री-ऐप्लिकेशन पर पड़ता है.
    • जब उपयोगकर्ता किसी ACTION_PROVISION_MANAGED_PROFILE या ACTION_PROVISION_MANAGED_DEVICE इंटेंट, सिस्टम अब नतीजे का RESULT_CANCELED कोड दिखाता है.
  • अन्य एपीआई में बदलाव:
    • डेटा खर्च: android.app.usage.NetworkUsageStats क्लास का नाम बदल दिया गया है NetworkStats.
  • ग्लोबल सेटिंग में हुए बदलाव:
    • इन सेटिंग को अब setGlobalSettings() के ज़रिए सेट नहीं किया जा सकता:
      • BLUETOOTH_ON
      • DEVELOPMENT_SETTINGS_ENABLED
      • MODE_RINGER
      • NETWORK_PREFERENCE
      • WIFI_ON
    • ये ग्लोबल सेटिंग अब setGlobalSettings() के ज़रिए सेट की जा सकती हैं: