يتضمن الإصدار Android 6.0 والإصدارات الأحدث إمكانية الحصول على أذونات مميزة التطبيقات توفير تهيئة خاصة بمشغّل شبكة الجوّال للنظام الأساسي. هذا النمط استنادًا إلى امتيازات مشغِّل شبكة الجوّال في UICC تم طرحه في نظام التشغيل Android 5.1 (Lollipop MR1)، ويتيح مشغّل شبكة الجوّال التكوين من تراكب التكوين الثابت ويمنحك قدرة شركات النقل والمصنّعين الأصليين للأجهزة على توفير إعدادات مشغّل شبكة الجوّال ديناميكيًا المنصة من خلال واجهة محددة.
يمكن تحميل تطبيق مشغّل شبكة الجوّال الموقَّع بشكل صحيح إما مسبقًا في صورة النظام، مُثبّتًا تلقائيًا أو يدويًا من خلال متجر التطبيقات. التطبيق يطلب النظام الأساسي طلب الإعدادات من الإعدادات. بما في ذلك:
- شبكات التجوال/غير التجوال
- بريد صوتي مرئي
- إعدادات شبكة الرسائل القصيرة (SMS) ورسائل الوسائط المتعددة (MMS)
- إعدادات VoLTE/IMS
إن تحديد القيم المطلوب إرجاعها متروك تمامًا لتطبيق مشغّل شبكة الجوّال. ويمكن أن تكون ديناميكية استنادًا إلى المعلومات التفصيلية التي يتم تمريرها إلى التطبيق من خلال بدون خادم.
تتمثل الفوائد الرئيسية لهذا المنهج في ما يلي:
- التهيئة الديناميكية - دعم مفاهيم مثل مشتقة غير تابعة لمركز عملائي، مثل، مشغّلو الشبكات الافتراضية للأجهزة الجوّالة (MVNOs) أو يشتركون العملاء في خدمات إضافية.
- الدعم للأجهزة التي تُباع من خلال أي قناة: على سبيل المثال، يمكن ضبط هاتف السوق المفتوح تلقائيًا على الإعدادات عن طريق تنزيل تطبيق من متجر التطبيقات.
- الأمان: امتياز توفير هذه الإعدادات هو يتم تقديمها فقط للتطبيقات الموقَّعة من قِبل مشغِّل شبكة الجوّال.
- واجهة برمجة تطبيقات محددة - تم تخزين هذه الإعدادات في السابق في الغالب في تراكبات XML الداخلية داخل إطار العمل وليس من خلال منتدى عام واجهة برمجة التطبيقات. تعد واجهة برمجة تطبيقات تهيئة مشغل شبكة الجوال في Android 6.0 عامة ومحددة بشكل جيد.
آلية العمل
تحميل الإعدادات
إعداد مشغّل شبكة الجوّال الذي توفره هذه الميزة هو مجموعة من أزواج المفتاح/القيمة. التي تغيّر سلوكيات مختلفة مرتبطة بالاتصال الهاتفي في المنصة.
يتم تحديد مجموعة القيم لجهاز معين من خلال الاستعلام عن المكونات التالية بالترتيب:
- تطبيق مشغل شبكة الجوال (هذا اختياري، ولكنه يوصى به المكان الذي يتم فيه إجراء إعدادات إضافية غير تلك المتوفّرة في أداة Android Open مشروع المصدر (AOSP))
- تطبيق إعداد النظام الأساسي المرفق مع صورة النظام
- قيم افتراضية، يتم ترميزها بشكل ثابت في إطار العمل (تعادل السلوك السابق إلى Android 6.0)
تطبيق تهيئة النظام الأساسي
يتم إرفاق تطبيق إعداد نظام أساسي عام مع صورة النظام. يمكن أن يوفر هذا التطبيق
لأي متغيرات لا يستخدمها تطبيق مشغل شبكة الجوال العادي. إعدادات النظام الأساسي
يمكن العثور على تطبيق (في Android 6.0) في: packages/apps/CarrierConfig
الغرض من هذا التطبيق هو توفير بعض الإعدادات لكل شبكة عندما يختار مشغّل شبكة الجوّال إذا لم يكن التطبيق مثبَّتًا، ويجب أن يُجري مشغّلو شبكات الجوّال/المصنّعون الأصليون للأجهزة تغييرات بسيطة فقط عليه في صورهم الخاصة. بدلاً من ذلك، يجب أن يوفّر مشغّل شبكة الجوّال التطبيق المنفصل لمشغّل شبكة الجوّال. لتخصيص شركة النقل، ما يسمح بتوزيع التحديثات من خلال وسائل مثل كمتاجر التطبيقات.
كيفية منح الامتياز لتطبيق مشغّل شبكة الجوّال
يجب توقيع تطبيق مشغّل شبكة الجوّال المعنيّ باستخدام الشهادة نفسها المتوفّرة على شريحة SIM، على النحو الموضَّح في امتيازات مشغِّل شبكة الجوّال في UICC.
المعلومات التي يتم إرسالها إلى تطبيق مشغّل شبكة الجوّال
يتم تقديم القيم التالية إلى تطبيق مشغّل شبكة الجوّال، ما يتيح إنشاء قرار ديناميكي بشأن القيم المطلوب عرضها:
- MCC
- MNC
- SPN
- رقم التعريف الدولي للمشترك في خدمات الجوّال (IMSI)
- رقم GID1
- رقم GID2
- رقم تعريف مشغِّل شبكة الجوّال
لمزيد من المعلومات حول دمج أرقام تعريف مشغّلي شبكات الجوّال، يُرجى الاطّلاع على دمج أرقام تعريف مشغّلي شبكات الجوّال مع CarrierConfig
عند تحميل إعدادات مشغّل شبكة الجوّال
يتم إنشاء قائمة أزواج القيم الرئيسية على النحو التالي:
- عند تحميل شريحة SIM (تشغيل التشغيل أو التبديل السريع لشريحة SIM)
- عندما يشغّل تطبيق مشغّل شبكة الجوّال عملية إعادة التحميل يدويًا
- عند تحديث تطبيق مشغّل شبكة الجوّال
يمكنك الاطّلاع على
android.service.carrier.CarrierService#onLoadConfig()
للحصول على المزيد من التفاصيل.
استخدام الإعدادات
عندما يتم إنشاء التهيئة، يتم استخدام القيم الموجودة داخلها لضبط قيم مختلفة لضبط إعدادات النظام، بما في ذلك:
- إعدادات الاتصال الهاتفي في إطار العمل الداخلي
- قيم الإعدادات التي تعرضها حزمة تطوير البرامج (SDK)، على سبيل المثال، في SmsManager
- إعدادات التطبيقات مثل قيم اتصال VVM في Dialer
مفاتيح الإعداد
يتم تحديد قائمة المفاتيح كجزء من حزمة تطوير البرامج (SDK) المتاحة للجميع في android.telephony.CarrierConfigManager
.
ولا يمكن تغييرها ضمن مستوى واجهة برمجة التطبيقات نفسه انظر الجدول أدناه للحصول على ملخص للمفاتيح.
إنشاء التطبيق
إنشاء التطبيق
يجب أن يستهدف تطبيقك المستوى 23 من واجهة برمجة التطبيقات لنظام التشغيل Android 6.0.
يُرجى تعريف الفئة التي تلغي السمة android.service.carrier.CarrierService.
- يمكنك تجاهُل
onLoadConfig
لعرض القيم التي تريد عرضها التوريد على أساس الكائنservice.carrier.CarrierIdentifier
تمت بنجاح. - إضافة منطق لاستدعاء
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>
توقيع التطبيق بنفس الشهادة على شريحة SIM
راجِع امتيازات مشغِّل شبكة الجوّال في واجهة المستخدم الموحدة (UICC) للاطّلاع على متطلبات المشروع.
إضافة أسماء نقاط الوصول (APN) باستخدام تطبيق مشغّل شبكة جوّال
لإضافة أسماء نقاط الوصول (APN) آليًا من تطبيق مشغّل شبكة الجوّال (على سبيل المثال، أثناء شريحة SIM
التفعيل)، واستخدام
ContentResolver
واجهات برمجة تطبيقات لإضافة عناصر APN إلى موفّر محتوى
الذي تم تحديده من خلال معرِّف الموارد المنتظم (URI)
android.provider.Telephony.Carriers.CONTENT_URI
للحصول على مزيد من المعلومات حول بنية الجدول لمعرف الموارد المنتظم (URI) للمحتوى، راجع
Telephony.Carriers
لمزيد من المعلومات، يُرجى مراجعة APN وCarrierConfig.
اختبار التطبيق
عند إنشاء تطبيق الضبط، يمكنك اختبار الرمز عبر:
- شريحة SIM تحتوي على توقيع شهادة صالح
- جهاز يعمل بالإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث، مثل جهاز Android
ضبط إمكانات خدمة مشغّل شبكة الجوّال
في نظام Android، تصف إمكانات خدمة مشغل شبكة الجوال ما إذا كانت خدمات الصوت والمراسلة وخدمات البيانات على الجهاز. السماح لمشغّلي شبكة الجوّال بتحديده إمكانات الخدمة للجهاز على مستوى الجهاز وفي صفحة الاشتراك (الإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث).
إمكانات الخدمة على مستوى الجهاز
يتم ضبط إمكانات الخدمة على مستوى الجهاز عند الجهاز الذي تم تصنيعه (لا يمكن تغييره بعد التصنيع). بإمكان مشغّلي شبكات الجوّال تحديد الإمكانات على مستوى الجهاز من خلال مورد النظام التالي تجاوز:
يمكن للتطبيقات طلب الاستفادة من إمكانيات الخدمة على مستوى الجهاز من خلال ما يلي: واجهات برمجة التطبيقات:
إمكانات الخدمة على مستوى الاشتراك
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 15 أو الإصدارات الأحدث، يمكن لمشغّلي شبكات الجوّال تحديد
إمكانات الخدمة للجهاز على مستوى الاشتراك. لتحديد خدمة على مستوى الاشتراك
القدرات، يمكنك استخدام
CarrierConfigManager.KEY_CELLULAR_SERVICE_CAPABILITIES_INT_ARRAY
واجهة برمجة التطبيقات. على سبيل المثال، لتحديد أنّ الاشتراك هو بيانات فقط، اضبط القيمة على
SubscriptionManager#SERVICE_CAPABILITY_DATA
يمكن للتطبيقات (تطبيقات النظام التي يتم تحميلها مسبقًا والتطبيقات التابعة لجهات خارجية) إرسال طلبات بحث إلى مشغِّل شبكة الجوّال.
إمكانات الخدمة لاشتراك معيّنين من خلال
SubscriptionInfo.getServiceCapabilities()
. يتيح هذا لمطوّري التطبيقات تخصيص تجربة المستخدم للتطبيقات استنادًا إلى
الإمكانات المتاحة للاشتراك. على سبيل المثال، يمكن لمطوّري التطبيقات
التأكد من أن تطبيق الاتصال لا يسمح بإجراء المكالمات إذا كان المستخدم على
البيانات فقط.
واجهات برمجة التطبيقات لإمكانيات الخدمة التي تم إيقافها نهائيًا
بدءًا من نظام التشغيل Android 15، يوفر Android كلاً من على مستوى الاشتراك. نتيجةً لهذا التغيير، سيتم تغيير مستوى الجهاز الحالي الإمكانات التي تمت إعادة تسمية واجهات برمجة التطبيقات لها لتسهيل القراءة. يسرد الجدول التالي واجهات برمجة التطبيقات المتوقّفة نهائيًا وواجهات برمجة التطبيقات التي تمت إعادة تسميتها والتي تم توفيرها في Android 15:
متوقّف نهائيًا (الإصدار 14 من نظام التشغيل Android أو الإصدارات الأقدم) | مماثل (الإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث) |
---|---|
TelephonyManager.isVoiceCapable() |
TelephonyManager.isDeviceVoiceCapable() |
TelephonyManager.isSmsCapable() |
TelephonyManager.isDeviceSmsCapable() |