मैनेज किए जा रहे कॉन्फ़िगरेशन सेट अप करें

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

उदाहरण के लिए, किसी संगठन को यह ज़रूरी हो सकता है कि अनुमति वाले ऐप्लिकेशन, आईटी एडमिन को ये काम करने की अनुमति दें:

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

इस गाइड में, अपने ऐप्लिकेशन में मैनेज किए जा रहे कॉन्फ़िगरेशन की सेटिंग लागू करने का तरीका बताया गया है. मैनेज किए जा रहे कॉन्फ़िगरेशन वाले ऐप्लिकेशन के सैंपल देखने के लिए, ManagedConfigurations देखें. अगर आप एंटरप्राइज़ मोबिलिटी मैनेजमेंट (EMM) डेवलपर हैं, तो Android Management API की गाइड देखें.

ध्यान दें: पुराने समय की वजहों से, इन कॉन्फ़िगरेशन सेटिंग को पाबंदियां कहा जाता है. साथ ही, इन्हें उन फ़ाइलों और क्लास के साथ लागू किया जाता है जिनमें इस शब्द का इस्तेमाल किया गया हो, जैसे कि RestrictionsManager. हालांकि, ये पाबंदियां, ऐप्लिकेशन के फ़ंक्शन पर पाबंदियों के साथ-साथ, कॉन्फ़िगरेशन के कई विकल्पों को लागू कर सकती हैं.

रिमोट कॉन्फ़िगरेशन की खास जानकारी

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

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

बाहरी तौर पर मैनेज किए जाने वाले कॉन्फ़िगरेशन उपलब्ध कराने के लिए:

  • अपने ऐप्लिकेशन मेनिफ़ेस्ट में, मैनेज किए जा रहे कॉन्फ़िगरेशन की जानकारी दें. ऐसा करने पर, आईटी एडमिन को Google Play एपीआई की मदद से, ऐप्लिकेशन के कॉन्फ़िगरेशन पढ़ने की अनुमति मिलती है.
  • जब भी ऐप्लिकेशन फिर से शुरू होता है, तो मैनेज किए जा रहे मौजूदा कॉन्फ़िगरेशन की जांच करने के लिए RestrictionsManager ऑब्जेक्ट का इस्तेमाल करें. साथ ही, उन कॉन्फ़िगरेशन के मुताबिक अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) और व्यवहार में बदलाव करें.
  • ACTION_APPLICATION_RESTRICTIONS_CHANGED इंटेंट को सुनें. जब आपको यह ब्रॉडकास्ट मिले, तो RestrictionsManager पर क्लिक करके देखें कि मैनेज किए जा रहे मौजूदा कॉन्फ़िगरेशन क्या हैं. साथ ही, अपने ऐप्लिकेशन के व्यवहार में ज़रूरी बदलाव करें.

मैनेज किए जा रहे कॉन्फ़िगरेशन तय करना

आपका ऐप्लिकेशन, मैनेज किए गए किसी भी कॉन्फ़िगरेशन के साथ काम कर सकता है. मैनेज किए जा रहे कॉन्फ़िगरेशन की फ़ाइल में, ऐप्लिकेशन के मैनेज किए जा रहे कॉन्फ़िगरेशन का एलान किया जाता है. साथ ही, मेनिफ़ेस्ट में कॉन्फ़िगरेशन फ़ाइल का एलान किया जाता है. कॉन्फ़िगरेशन फ़ाइल बनाने से, दूसरे ऐप्लिकेशन को आपके ऐप्लिकेशन के मैनेज किए गए कॉन्फ़िगरेशन की जांच करने की अनुमति मिलती है. EMM पार्टनर, Google Play के एपीआई का इस्तेमाल करके आपके ऐप्लिकेशन के कॉन्फ़िगरेशन पढ़ सकते हैं.

अपने ऐप्लिकेशन के रिमोट कॉन्फ़िगरेशन के विकल्पों को तय करने के लिए, अपने मेनिफ़ेस्ट के <application> एलिमेंट में यह एलिमेंट डालें:

<meta-data android:name="android.content.APP_RESTRICTIONS"
    android:resource="@xml/app_restrictions" />

अपने ऐप्लिकेशन की res/xml डायरेक्ट्री में app_restrictions.xml नाम की फ़ाइल बनाएं. उस फ़ाइल के स्ट्रक्चर के बारे में, RestrictionsManager के रेफ़रंस में बताया गया है. इस फ़ाइल में एक टॉप लेवल <restrictions> एलिमेंट होता है. इसमें ऐप्लिकेशन के हर कॉन्फ़िगरेशन विकल्प के लिए, एक <restriction> चाइल्ड एलिमेंट होता है.

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

एंटरप्राइज़ वाले एनवायरमेंट में, EMM आम तौर पर मैनेज किए जा रहे कॉन्फ़िगरेशन स्कीमा का इस्तेमाल करके, आईटी एडमिन के लिए रिमोट कंसोल जनरेट करता है. इससे एडमिन, आपके ऐप्लिकेशन को रिमोट तरीके से कॉन्फ़िगर कर सकते हैं.

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

उदाहरण के लिए, मान लें कि आपके ऐप्लिकेशन को कहीं से भी कॉन्फ़िगर किया जा सकता है, ताकि वह मोबाइल नेटवर्क से डेटा डाउनलोड कर सके या न कर सके. आपके ऐप्लिकेशन में ऐसा <restriction> एलिमेंट हो सकता है:

<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">

  <restriction
    android:key="downloadOnCellular"
    android:title="@string/download_on_cell_title"
    android:restrictionType="bool"
    android:description="@string/download_on_cell_description"
    android:defaultValue="true" />

</restrictions>

मैनेज किए जा रहे कॉन्फ़िगरेशन बंडल से उसकी वैल्यू पढ़ने के लिए, हर कॉन्फ़िगरेशन के android:key एट्रिब्यूट का इस्तेमाल किया जाता है. इस वजह से, हर कॉन्फ़िगरेशन में एक यूनीक कुंजी स्ट्रिंग होनी चाहिए और स्ट्रिंग को लोकलाइज़ नहीं किया जा सकता. इसे स्ट्रिंग लिटरल के साथ तय किया जाना चाहिए.

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

कोई ऐप्लिकेशन, bundle_array में बंडल का इस्तेमाल करके पाबंदियां तय करता है. उदाहरण के लिए, वीपीएन कनेक्शन के कई विकल्पों वाला ऐप्लिकेशन, bundle में हर वीपीएन सर्वर कॉन्फ़िगरेशन तय कर सकता है. साथ ही, एक बंडल कलेक्शन में कई बंडल को एक साथ ग्रुप किया जा सकता है:

<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android" >

  <restriction
    android:key="vpn_configuration_list"
    android:restrictionType="bundle_array">
    <restriction
      android:key="vpn_configuration"
      android:restrictionType="bundle">
      <restriction
        android:key="vpn_server"
        android:restrictionType="string"/>
      <restriction
        android:key="vpn_username"
        android:restrictionType="string"/>
      <restriction
        android:key="vpn_password"
        android:restrictionType="string"/>
    </restriction>
  </restriction>

</restrictions>

android:restrictionType एलिमेंट के लिए काम करने वाले टाइप, टेबल 1 में दिए गए हैं. साथ ही, RestrictionsManager और RestrictionEntry के रेफ़रंस में भी इनके बारे में बताया गया है.

टेबल 1. पाबंदी की एंट्री के टाइप और इस्तेमाल.

टाइप android:restrictionType आम तौर पर इस्तेमाल
TYPE_BOOLEAN "bool" बूलियन वैल्यू, सही या गलत.
TYPE_STRING "string" कोई स्ट्रिंग वैल्यू, जैसे कि नाम.
TYPE_INTEGER "integer" वैल्यू एक पूर्णांक होनी चाहिए, जो MIN_VALUE से लेकर MAX_VALUE के बीच होनी चाहिए.
TYPE_CHOICE "choice" android:entryValues से चुनी गई स्ट्रिंग वैल्यू, जिसे आम तौर पर सिंगल-सिलेक्ट सूची के तौर पर दिखाया जाता है.
TYPE_MULTI_SELECT "multi-select" android:entryValues से चुनी गई वैल्यू वाला स्ट्रिंग कलेक्शन. इसका इस्तेमाल, एक से ज़्यादा विकल्प चुनने की सुविधा वाली सूची दिखाने के लिए करें. जैसे, अनुमति वाली सूची में शामिल करने के लिए खास टाइटल चुनना.
TYPE_NULL "hidden" छिपी हुई पाबंदी का टाइप. इस टाइप का इस्तेमाल उस जानकारी के लिए करें जिसे एक से दूसरी जगह ट्रांसफ़र करना ज़रूरी है, लेकिन उपयोगकर्ता को यूज़र इंटरफ़ेस (यूआई) में नहीं दिखाना है. एक स्ट्रिंग वैल्यू सेव करता है.
TYPE_BUNDLE_ARRAY "bundle_array" पाबंदी के ऐरे को स्टोर करने के लिए, इसका इस्तेमाल करें bundles. यह सुविधा, Android 6.0 (एपीआई लेवल 23) में उपलब्ध है.

ध्यान दें: android:entryValues को मशीन पढ़ सकती है और इसे स्थानीय भाषा में बदला नहीं जा सकता. android:entries का इस्तेमाल करके, ऐसी वैल्यू दिखाएं जिन्हें कोई भी व्यक्ति पढ़ सके और जिन्हें स्थानीय भाषा में बदला जा सके. हर एंट्री के लिए, android:entryValues में एक इंडेक्स होना चाहिए.

मैनेज किए जा रहे कॉन्फ़िगरेशन देखना

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

मौजूदा कॉन्फ़िगरेशन सेटिंग जानने के लिए, आपका ऐप्लिकेशन RestrictionsManager ऑब्जेक्ट का इस्तेमाल करता है. आपके ऐप्लिकेशन को इन समय पर, मैनेज किए जा रहे मौजूदा कॉन्फ़िगरेशन की जांच करनी चाहिए:

RestrictionsManager ऑब्जेक्ट पाने के लिए, getActivity() की मदद से मौजूदा गतिविधि पाएं. इसके बाद, उस गतिविधि के Activity.getSystemService() तरीके को कॉल करें:

Kotlin

var myRestrictionsMgr =
        activity?.getSystemService(Context.RESTRICTIONS_SERVICE) as RestrictionsManager

Java

RestrictionsManager myRestrictionsMgr =
    (RestrictionsManager) getActivity()
        .getSystemService(Context.RESTRICTIONS_SERVICE);

RestrictionsManager मिलने के बाद, उसके getApplicationRestrictions() तरीके को कॉल करके, मौजूदा कॉन्फ़िगरेशन सेटिंग देखी जा सकती हैं:

Kotlin

var appRestrictions: Bundle = myRestrictionsMgr.applicationRestrictions

Java

Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();

ध्यान दें: आसानी के लिए, UserManager.getApplicationRestrictions() को कॉल करके, UserManager के साथ मौजूदा कॉन्फ़िगरेशन भी फ़ेच किए जा सकते हैं. यह तरीका, RestrictionsManager.getApplicationRestrictions() की तरह ही काम करता है.

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

मैनेज किए जा रहे कॉन्फ़िगरेशन पढ़ना और उन्हें लागू करना

getApplicationRestrictions() तरीका, सेट किए गए हर कॉन्फ़िगरेशन के लिए एक की-वैल्यू पेयर वाला Bundle दिखाता है. सभी वैल्यू Boolean, int, String, और String[] टाइप की होती हैं. मैनेज किए गए कॉन्फ़िगरेशन Bundle मिलने के बाद, उन डेटा टाइप के लिए, स्टैंडर्ड Bundle तरीकों की मदद से मौजूदा कॉन्फ़िगरेशन सेटिंग देखी जा सकती हैं. जैसे, getBoolean() या getString().

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

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

Kotlin

val appCanUseCellular: Boolean =
        if (appRestrictions.containsKey("downloadOnCellular")) {
            appRestrictions.getBoolean("downloadOnCellular")
        } else {
            // cellularDefault is a boolean using the restriction's default value
            cellularDefault
        }

if (!appCanUseCellular) {
    // ...turn off app's cellular-download functionality
    // ...show appropriate notices to user
}

Java

boolean appCanUseCellular;

if (appRestrictions.containsKey("downloadOnCellular")) {
    appCanUseCellular = appRestrictions.getBoolean("downloadOnCellular");
} else {
    // cellularDefault is a boolean using the restriction's default value
    appCanUseCellular = cellularDefault;
}

if (!appCanUseCellular) {
    // ...turn off app's cellular-download functionality
    // ...show appropriate notices to user
}

एक से ज़्यादा नेस्ट की गई पाबंदियां लागू करने के लिए, bundle_array पाबंदी वाली एंट्री को Parcelable ऑब्जेक्ट के कलेक्शन के तौर पर पढ़ें और Bundle के तौर पर कास्ट करें. इस उदाहरण में, हर वीपीएन के कॉन्फ़िगरेशन डेटा को पार्स किया जाता है और इसका इस्तेमाल सर्वर कनेक्शन के विकल्पों की सूची बनाने के लिए किया जाता है:

Kotlin

// VpnConfig is a sample class used store config data, not defined
val vpnConfigs = mutableListOf<VpnConfig>()

val parcelables: Array<out Parcelable>? =
        appRestrictions.getParcelableArray("vpn_configuration_list")

if (parcelables?.isNotEmpty() == true) {
    // iterate parcelables and cast as bundle
    parcelables.map { it as Bundle }.forEach { vpnConfigBundle ->
        // parse bundle data and store in VpnConfig array
        vpnConfigs.add(VpnConfig()
                .setServer(vpnConfigBundle.getString("vpn_server"))
                .setUsername(vpnConfigBundle.getString("vpn_username"))
                .setPassword(vpnConfigBundle.getString("vpn_password")))
    }
}

if (vpnConfigs.isNotEmpty()) {
    // ...choose a VPN configuration or prompt user to select from list
}

Java

// VpnConfig is a sample class used store config data, not defined
List<VpnConfig> vpnConfigs = new ArrayList<>();

Parcelable[] parcelables =
    appRestrictions.getParcelableArray("vpn_configuration_list");

if (parcelables != null && parcelables.length > 0) {
    // iterate parcelables and cast as bundle
    for (int i = 0; i < parcelables.length; i++) {
        Bundle vpnConfigBundle = (Bundle) parcelables[i];
        // parse bundle data and store in VpnConfig array
        vpnConfigs.add(new VpnConfig()
            .setServer(vpnConfigBundle.getString("vpn_server"))
            .setUsername(vpnConfigBundle.getString("vpn_username"))
            .setPassword(vpnConfigBundle.getString("vpn_password")));
    }
}

if (!vpnConfigs.isEmpty()) {
    // ...choose a VPN configuration or prompt user to select from list
}

मैनेज किए जा रहे कॉन्फ़िगरेशन में होने वाले बदलावों को सुनना

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

ध्यान दें: ACTION_APPLICATION_RESTRICTIONS_CHANGED इंटेंट सिर्फ़ उन दर्शकों को भेजा जाता है जो डाइनैमिक तौर पर रजिस्टर किए गए हैं. यह इंटेंट, ऐप्लिकेशन मेनिफ़ेस्ट में बताए गए दर्शकों को नहीं भेजा जाता.

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

Kotlin

val restrictionsFilter = IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED)

val restrictionsReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {

        // Get the current configuration bundle
        val appRestrictions = myRestrictionsMgr.applicationRestrictions

        // Check current configuration settings, change your app's UI and
        // functionality as necessary.
    }
}

registerReceiver(restrictionsReceiver, restrictionsFilter)

Java

IntentFilter restrictionsFilter =
    new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED);

BroadcastReceiver restrictionsReceiver = new BroadcastReceiver() {
  @Override public void onReceive(Context context, Intent intent) {

    // Get the current configuration bundle
    Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();

    // Check current configuration settings, change your app's UI and
    // functionality as necessary.
  }
};

registerReceiver(restrictionsReceiver, restrictionsFilter);

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

ईएमएम को मैनेज किए जा रहे कॉन्फ़िगरेशन के बारे में सुझाव, शिकायत या राय भेजना

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

ईएमएम सेवा देने वाली कंपनियां, इस सुझाव या राय को अपने कंसोल में दिखा सकती हैं, ताकि आईटी एडमिन इसे देख सकें. इस विषय के बारे में ज़्यादा जानकारी के लिए, ईएमएम को ऐप्लिकेशन के बारे में सुझाव/राय दें या शिकायत करें लेख पढ़ें. इसमें, अपने ऐप्लिकेशन में सुझाव/राय देने या शिकायत करने की सुविधा जोड़ने का तरीका भी बताया गया है.

अन्य कोड सैंपल

ManagedConfigurations के सैंपल में, इस पेज पर बताए गए एपीआई के इस्तेमाल के बारे में ज़्यादा जानकारी दी गई है.

निजी प्रोफ़ाइल पर ऐप्लिकेशन को अनुमति वाली सूची में शामिल करना/ब्लॉक करना

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