वाहक विन्यास

एंड्रॉइड 6.0 और उच्चतर में प्लेटफ़ॉर्म पर वाहक-विशिष्ट कॉन्फ़िगरेशन प्रदान करने के लिए विशेषाधिकार प्राप्त ऐप्स की क्षमता शामिल है। एंड्रॉइड 5.1 (लॉलीपॉप एमआर1) में पेश किए गए यूआईसीसी कैरियर विशेषाधिकारों पर आधारित यह कार्यक्षमता, वाहक कॉन्फ़िगरेशन को स्थिर कॉन्फ़िगरेशन ओवरले से दूर ले जाने की अनुमति देती है और वाहक और ओईएम को एक परिभाषित इंटरफ़ेस के माध्यम से प्लेटफ़ॉर्म पर वाहक कॉन्फ़िगरेशन को गतिशील रूप से प्रदान करने की क्षमता देती है।

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

  • रोमिंग/नॉनरोमिंग नेटवर्क
  • दृश्य ध्वनि मेल
  • एसएमएस/एमएमएस नेटवर्क सेटिंग्स
  • VoLTE/IMS कॉन्फ़िगरेशन

कौन से मान लौटाने हैं इसका निर्धारण पूरी तरह से वाहक ऐप पर निर्भर करता है और प्लेटफ़ॉर्म के माध्यम से ऐप को दी गई विस्तृत जानकारी के आधार पर गतिशील हो सकता है।

इस दृष्टिकोण के प्रमुख लाभ हैं:

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

यह काम किस प्रकार करता है

कॉन्फ़िगरेशन लोड हो रहा है

इस सुविधा द्वारा प्रदान किया गया वाहक कॉन्फ़िगरेशन कुंजी-मूल्य जोड़े का एक सेट है जो प्लेटफ़ॉर्म में विभिन्न टेलीफोनी-संबंधित व्यवहारों को बदलता है।

किसी विशेष डिवाइस के लिए मानों का सेट निम्नलिखित घटकों को क्रम से क्वेरी करके निर्धारित किया जाता है:

  1. कैरियर ऐप (यह वैकल्पिक है, लेकिन एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) में मौजूद कॉन्फ़िगरेशन से परे अतिरिक्त कॉन्फ़िगरेशन के लिए यह अनुशंसित स्थान है)
  2. प्लेटफ़ॉर्म कॉन्फ़िग ऐप सिस्टम छवि के साथ बंडल किया गया है
  3. डिफ़ॉल्ट मान, फ़्रेमवर्क में हार्डकोड किए गए (एंड्रॉइड 6.0 से पहले के व्यवहार के बराबर)

प्लेटफ़ॉर्म कॉन्फ़िग ऐप

एक सामान्य प्लेटफ़ॉर्म कॉन्फ़िगरेशन ऐप सिस्टम छवि के साथ बंडल किया गया है। यह ऐप किसी भी वेरिएबल के लिए मान प्रदान कर सकता है जो नियमित वाहक ऐप नहीं करता है। प्लेटफ़ॉर्म कॉन्फ़िगरेशन ऐप (एंड्रॉइड 6.0 में) यहां पाया जा सकता है: packages/apps/CarrierConfig

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

किसी कैरियर ऐप को विशेषाधिकार कैसे दिया जाता है

प्रश्न में वाहक ऐप को सिम कार्ड पर पाए गए उसी प्रमाणपत्र के साथ हस्ताक्षरित किया जाना चाहिए, जैसा कि यूआईसीसी कैरियर विशेषाधिकार में दस्तावेजित है।

कैरियर ऐप को कौन सी जानकारी दी जाती है

वाहक ऐप को निम्नलिखित मान प्रदान किए जाते हैं, जो उसे गतिशील निर्णय लेने में सक्षम बनाता है कि कौन से मान वापस करने हैं:

  • एमसीसी
  • बहुराष्ट्रीय कंपनी
  • SP एन
  • आईएमएसआई
  • GID1
  • GID2
  • वाहक आईडी

कैरियर आईडी को एकीकृत करने के बारे में अधिक जानकारी के लिए कैरियर आईडी को कैरियर कॉन्फिग के साथ एकीकृत करना देखें।

लोड करते समय कैरियर कॉन्फिगरेशन होता है

प्रमुख मूल्य युग्मों की सूची का निर्माण होता है:

  • जब सिम लोड हो (बूट, या सिम हॉट स्वैप)
  • जब कैरियर ऐप मैन्युअल रूप से पुनः लोड ट्रिगर करता है
  • जब कैरियर ऐप अपडेट हो जाता है

अधिक विवरण के लिए android.service.carrier.CarrierService#onLoadConfig() संदर्भ देखें।

कॉन्फिग का उपयोग करना

जब कॉन्फ़िगरेशन बनाया जाता है, तो उसके भीतर मौजूद मानों का उपयोग सिस्टम कॉन्फ़िगरेशन के विभिन्न मानों को सेट करने के लिए किया जाता है, जिनमें शामिल हैं:

  • आंतरिक ढांचा टेलीफोनी सेटिंग्स
  • एसडीके-लौटाए गए कॉन्फ़िगरेशन मान, उदाहरण के लिए, एसएमएसमैनेजर में
  • डायलर में वीवीएम कनेक्शन मान जैसी ऐप सेटिंग्स

कॉन्फ़िगरेशन कुंजियाँ

कुंजियों की सूची को android.telephony.CarrierConfigManager में सार्वजनिक SDK के भाग के रूप में परिभाषित किया गया है और समान API स्तर के भीतर नहीं बदला जा सकता है। कुंजियों के सारांश के लिए नीचे दी गई तालिका देखें।

ऐप बनाना

ऐप बनाना

आपके ऐप को एंड्रॉइड 6.0 एपीआई स्तर (23) को लक्षित करना चाहिए।

एक वर्ग की घोषणा करना जो android.service.carrier.CarrierService को ओवरराइड करता है

  1. पारित किए गए service.carrier.CarrierIdentifier ऑब्जेक्ट के आधार पर आप जो मान आपूर्ति करना चाहते हैं उसे वापस करने के लिए onLoadConfig ओवरराइड करें।
  2. उन परिदृश्यों में notifyConfigChangedForSubId कॉल करने के लिए तर्क जोड़ें जहां वाहक कॉन्फ़िगरेशन समय के साथ बदल सकता है (उदाहरण के लिए, जब उपयोगकर्ता अपने खाते में अतिरिक्त सेवाएं जोड़ता है)।

एक उदाहरण नीचे है:

public class SampleCarrierConfigService extends CarrierService {

    private static final String TAG = "SampleCarrierConfigService";

    public SampleCarrierConfigService() {
        Log.d(TAG, "Service created");
    }

    @Override
    public PersistableBundle onLoadConfig(CarrierIdentifier id) {
        Log.d(TAG, "Config being fetched");
        PersistableBundle config = new PersistableBundle();
        config.putBoolean(
            CarrierConfigManager.KEY_CARRIER_VOLTE_AVAILABLE_BOOL, true);
        config.putBoolean(
            CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL, false);
        config.putInt(CarrierConfigManager.KEY_VOLTE_REPLACEMENT_RAT_INT, 6);
        // Check CarrierIdentifier and add more config if needed…
        return config;
    }
}

अधिक विवरण के लिए, android.service.carrier.CarrierService संदर्भ देखें।

मेनिफ़ेस्ट में क्लास का नामकरण

एक उदाहरण नीचे है:

<service android:name=".SampleCarrierConfigService"
android:label="@string/service_name"
android:permission="android.permission.BIND_CARRIER_SERVICES">
      <intent-filter>
      <action android:name="android.service.carrier.CarrierService"/></intent-filter>
</service>

सिम पर उसी प्रमाणपत्र के साथ ऐप पर हस्ताक्षर करना

आवश्यकताओं के लिए यूआईसीसी कैरियर विशेषाधिकार देखें।

कैरियर ऐप के साथ एपीएन जोड़ना

किसी कैरियर ऐप से एपीएन को प्रोग्रामेटिक रूप से जोड़ने के लिए (उदाहरण के लिए, सिम सक्रियण के दौरान), यूआरआई android.provider.Telephony.Carriers.CONTENT_URI द्वारा पहचाने गए सामग्री प्रदाता में एपीएन आइटम जोड़ने के लिए ContentResolver एपीआई का उपयोग करें। सामग्री यूआरआई के लिए तालिका संरचना के बारे में अधिक जानकारी के लिए, Telephony.Carriers देखें।

अधिक जानकारी के लिए APN और CarrierConfig देखें।

ऐप का परीक्षण

जब आपने अपना कॉन्फ़िगरेशन ऐप बना लिया है, तो आप अपने कोड का परीक्षण इसके साथ कर सकते हैं:

  • एक सिम जिसमें वैध प्रमाणपत्र हस्ताक्षर हो
  • एंड्रॉइड 6.0 और बाद के संस्करण पर चलने वाला एक उपकरण, उदाहरण के लिए एक एंड्रॉइड डिवाइस