वाहक विन्यास

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

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

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

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

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

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

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

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

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

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

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

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

एक जेनेरिक प्लेटफॉर्म कॉन्फिग ऐप को सिस्टम इमेज के साथ बंडल किया गया है। यह एप्लिकेशन किसी भी चर के लिए मूल्यों की आपूर्ति कर सकता है जो नियमित वाहक ऐप नहीं करता है। packages/apps/CarrierConfig

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

वाहक ऐप के लिए विशेषाधिकार कैसे प्रदान किया जाता है

UICC कैरियर प्रिविलेज में प्रलेखित, सिम कार्ड पर पाए गए प्रमाण पत्र के साथ प्रश्न में वाहक ऐप पर हस्ताक्षर किए जाने चाहिए।

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

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

  • एमसीसी
  • एमएनसी
  • SP एन
  • आईएमएसआई
  • जीआईडी ​​1
  • GID2
  • कैरियर आईडी

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

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

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

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

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

विन्यास का उपयोग करना

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

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

कॉन्फ़िगरेशन कुंजी

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

ऐप का निर्माण

ऐप बनाना

आपका ऐप Android 6.0 API स्तर (23) को लक्षित करना चाहिए।

Android.service.carrier.CarrierService को ओवरराइड करने वाले वर्ग की घोषणा करना

  1. service.carrier.CarrierIdentifier पर आधारित मानों को वापस करने के लिए onLoadConfig को ओवरराइड करें।
  2. कॉल notifyConfigChangedForSubId इन notifyConfigChangedForSubId को कॉल करें 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>

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

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

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

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

अधिक जानकारी के लिए, APN और कैरियरऑनफिग देखें।

एप्लिकेशन का परीक्षण

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

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