অ্যান্ড্রয়েড ৫.১ ইউনিভার্সাল ইন্টিগ্রেটেড সার্কিট কার্ড (UICC) অ্যাপের মালিকদের জন্য প্রাসঙ্গিক এপিআই (API)-গুলোতে বিশেষ সুবিধা প্রদানের একটি পদ্ধতি চালু করেছে। অ্যান্ড্রয়েড প্ল্যাটফর্ম একটি UICC-তে সংরক্ষিত সার্টিফিকেটগুলো লোড করে এবং এই সার্টিফিকেট দ্বারা স্বাক্ষরিত অ্যাপগুলোকে কয়েকটি বিশেষ এপিআই-তে কল করার অনুমতি দেয়।
অ্যান্ড্রয়েড ৭.০ এই বৈশিষ্ট্যটিকে UICC ক্যারিয়ার প্রিভিলেজ রুলগুলির জন্য অন্যান্য স্টোরেজ সোর্স সমর্থন করার জন্য প্রসারিত করেছে, যার ফলে API ব্যবহার করতে পারে এমন ক্যারিয়ারের সংখ্যা ব্যাপকভাবে বৃদ্ধি পেয়েছে। API রেফারেন্সের জন্য, CarrierConfigManager দেখুন; নির্দেশাবলীর জন্য, Carrier Configuration দেখুন।
ক্যারিয়ারদের UICC-এর উপর সম্পূর্ণ নিয়ন্ত্রণ থাকে, তাই এই ব্যবস্থাটি মোবাইল নেটওয়ার্ক অপারেটরের (MNO) অ্যাপগুলোকে সাধারণ অ্যাপ ডিস্ট্রিবিউশন চ্যানেলে (যেমন গুগল প্লে) হোস্ট করার জন্য একটি নিরাপদ ও নমনীয় উপায় প্রদান করে। এর মাধ্যমে ডিভাইসগুলোতে বিশেষ সুবিধা বজায় রাখা যায় এবং প্রতি-ডিভাইস প্ল্যাটফর্ম সার্টিফিকেট দিয়ে অ্যাপ সাইন করার বা সিস্টেম অ্যাপ হিসেবে প্রি-ইনস্টল করার প্রয়োজন হয় না।
UICC-এর নিয়মাবলী
UICC-তে থাকা স্টোরেজ GlobalPlatform Secure Element Access Control স্পেসিফিকেশনের সাথে সামঞ্জস্যপূর্ণ। কার্ডের অ্যাপ আইডেন্টিফায়ার (AID) হলো A00000015141434C00 , এবং কার্ডে সংরক্ষিত নিয়মগুলো আনার জন্য স্ট্যান্ডার্ড GET DATA কমান্ড ব্যবহার করা হয়। আপনি কার্ডের ওভার-দ্য-এয়ার (OTA) আপডেটের মাধ্যমে এই নিয়মগুলো আপডেট করতে পারেন।
ডেটা শ্রেণিবিন্যাস
UICC নিয়মগুলি নিম্নলিখিত ডেটা হায়ারার্কি ব্যবহার করে (বন্ধনীতে থাকা দুই-অক্ষরের অক্ষর এবং সংখ্যার সংমিশ্রণটি হল অবজেক্ট ট্যাগ)। প্রতিটি নিয়ম REF-AR-DO ( E2 ) এবং REF-DO এবং AR-DO এর একটি সংযোগ নিয়ে গঠিত:
-
REF-DO(E1)-তেDeviceAppID-REF-DOঅথবাDeviceAppID-REF-DOএবংPKG-REF-DO-এর একটি সংযুক্তি থাকে।-
DeviceAppID-REF-DO(C1) সার্টিফিকেটের SHA-1 (20 বাইট) অথবা SHA-256 (32 বাইট) স্বাক্ষর সংরক্ষণ করে। -
PKG-REF-DO(CA) হলো ম্যানিফেস্টে সংজ্ঞায়িত সম্পূর্ণ প্যাকেজ নামের স্ট্রিং, যা ASCII এনকোডেড এবং এর সর্বোচ্চ দৈর্ঘ্য ১২৭ বাইট।
-
-
AR-DO(E3)-কে সম্প্রসারিত করেPERM-AR-DO(DB) অন্তর্ভুক্ত করা হয়েছে, যা ৬৪টি পৃথক অনুমতির প্রতিনিধিত্বকারী একটি ৮-বাইট বিট মাস্ক।
যদি PKG-REF-DO উপস্থিত না থাকে, তবে সার্টিফিকেট দ্বারা স্বাক্ষরিত যেকোনো অ্যাপকে অ্যাক্সেস দেওয়া হয়; অন্যথায় সার্টিফিকেট এবং প্যাকেজ নাম উভয়ই মিলতে হবে।
নিয়মের উদাহরণ
অ্যাপটির নাম com.google.android.apps.myapp এবং হেক্স স্ট্রিং-এ SHA-1 সার্টিফিকেটটি হলো:
AB:CD:92:CB:B1:56:B2:80:FA:4E:14:29:A6:EC:EE:B6:E5:C1:BF:E4
হেক্স স্ট্রিং-এ UICC-এর নিয়মটি হলো:
E243 <= 43 is value length in hex
E135
C114 ABCD92CBB156B280FA4E1429A6ECEEB6E5C1BFE4
CA1D 636F6D2E676F6F676C652E616E64726F69642E617070732E6D79617070
E30A
DB08 0000000000000001
অ্যাক্সেস নিয়ম ফাইল সমর্থন
অ্যান্ড্রয়েড ৭.০-তে অ্যাক্সেস রুল ফাইল (ARF) থেকে ক্যারিয়ার প্রিভিলেজ রুলগুলো পড়ার সুবিধা যোগ করা হয়েছে।
অ্যান্ড্রয়েড প্ল্যাটফর্ম প্রথমে অ্যাক্সেস রুল অ্যাপ্লিকেশন (ARA) AID A00000015141434C00 নির্বাচন করার চেষ্টা করে। যদি এটি UICC-তে AID-টি খুঁজে না পায়, তবে এটি PKCS15 AID A000000063504B43532D3135 নির্বাচন করে ARF-এ ফিরে যায়। এরপর অ্যান্ড্রয়েড 0x4300 এ থাকা অ্যাক্সেস কন্ট্রোল রুলস ফাইল (ACRF) পড়ে এবং AID FFFFFFFFFFFF সহ এন্ট্রিগুলি খোঁজে। ভিন্ন AID-যুক্ত এন্ট্রিগুলি উপেক্ষা করা হয়, ফলে অন্যান্য ব্যবহারের ক্ষেত্রের নিয়মগুলিও একসাথে থাকতে পারে।
হেক্স স্ট্রিং-এ ACRF কন্টেন্টের উদাহরণ:
30 10 A0 08 04 06 FF FF FF FF FF FF 30 04 04 02 43 10
অ্যাক্সেস কন্ট্রোল কন্ডিশন ফাইল (ACCF)-এর বিষয়বস্তুর উদাহরণ:
30 16 04 14 61 ED 37 7E 85 D3 86 A8 DF EE 6B 86 4B D8 5B 0B FA A5 AF 81
উপরের উদাহরণে, 0x4310 হলো ACCF-এর অ্যাড্রেস, যেখানে 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81 সার্টিফিকেট হ্যাশটি রয়েছে। এই সার্টিফিকেট দ্বারা স্বাক্ষরিত অ্যাপগুলোকে ক্যারিয়ার প্রিভিলেজ প্রদান করা হয়।
সক্রিয় এপিআই
অ্যান্ড্রয়েড নিম্নলিখিত এপিআইগুলো সমর্থন করে।
টেলিফোনি ম্যানেজার
- ক্যারিয়ার অ্যাপকে UICC-এর কাছে চ্যালেঞ্জ/রেসপন্স চাওয়ার অনুমতি দেওয়ার পদ্ধতি:
getIccAuthentication। - কলিং অ্যাপটিকে ক্যারিয়ার প্রিভিলেজ দেওয়া হয়েছে কিনা তা যাচাই করার পদ্ধতি:
hasCarrierPrivileges। - ব্র্যান্ড এবং নম্বর অগ্রাহ্য করার পদ্ধতি:
- UICC-এর সাথে সরাসরি যোগাযোগের পদ্ধতিসমূহ:
- ডিভাইস মোড গ্লোবাল-এ সেট করার পদ্ধতি:
setPreferredNetworkTypeToGlobal. - ডিভাইস বা নেটওয়ার্কের পরিচয় পাওয়ার পদ্ধতিসমূহ:
- আন্তর্জাতিক মোবাইল সরঞ্জাম পরিচিতি (IMEI):
getImei - মোবাইল সরঞ্জাম শনাক্তকারী (MEID):
getMeid - নেটওয়ার্ক অ্যাক্সেস আইডেন্টিফায়ার (NAI):
getNai - সিম সিরিয়াল নম্বর:
getSimSerialNumber - সাবস্ক্রিপশন আইডি:
getSubscriptionId - সাবস্ক্রাইবার আইডি (IMSI):
getSubscriberId
- আন্তর্জাতিক মোবাইল সরঞ্জাম পরিচিতি (IMEI):
- ক্যারিয়ার কনফিগারেশন পাওয়ার পদ্ধতি:
getCarrierConfig - ডেটা প্রেরণের জন্য নেটওয়ার্কের ধরন জানার পদ্ধতি:
getDataNetworkType - ভয়েস পরিষেবার জন্য নেটওয়ার্কের ধরন জানার পদ্ধতি:
getVoiceNetworkType - সার্ভিসের অবস্থা জানার পদ্ধতি:
getServiceState - সাবস্ক্রিপশনের কল স্টেট পাওয়ার মেথড:
getCallStateForSubscription - UICC সিম (ইউসিম) অ্যাপ সম্পর্কে তথ্য পাওয়ার পদ্ধতিসমূহ:
- সিম সিরিয়াল নম্বর:
getSimSerialNumber - কার্ডের তথ্য:
getUiccCardsInfo - GID1 (গ্রুপ আইডি লেভেল1):
getGroupIdLevel1 - লাইন ১-এর জন্য ফোন নম্বর স্ট্রিং:
getLine1Number - নিষিদ্ধ পাবলিক ল্যান্ড মোবাইল নেটওয়ার্ক (PLMN):
getForbiddenPlmns - সমতুল্য হোম PLMN:
getEquivalentHomePlmns
- সিম সিরিয়াল নম্বর:
- ভয়েসমেইল নম্বর পেতে বা সেট করার পদ্ধতি:
- বিশেষ ডায়ালার কোড পাঠানোর পদ্ধতি:
sendDialerSpecialCode - রেডিও মোডেম রিসেট করার পদ্ধতি:
rebootModem - মোডেমটি স্লটের জন্য সক্রিয় আছে কিনা তা পরীক্ষা করার পদ্ধতি:
isModemEnabledForSlot - মাল্টি-সিম সমর্থিত কিনা তা পরীক্ষা করার পদ্ধতি:
isMultiSimSupported - মাল্টি-সিম কনফিগারেশন পরিবর্তন করলে রিবুট হয় কিনা তা পরীক্ষা করার পদ্ধতি:
doesSwitchMultiSimConfigTriggerReboot - নেটওয়ার্ক নির্বাচন মোড পেতে বা সেট করার পদ্ধতি:
- নেটওয়ার্ক স্ক্যানের অনুরোধ করার পদ্ধতি:
requestNetworkScan - নেটওয়ার্ক স্লাইসিং কনফিগারেশন পাওয়ার পদ্ধতি:
getNetworkSlicingConfiguration - অনুমোদিত/পছন্দের নেটওয়ার্কের ধরণগুলি পেতে বা সেট করার পদ্ধতি:
- ব্যবহারকারীর সেটিংস অনুযায়ী মোবাইল ডেটা বা রোমিং চালু আছে কিনা তা পরীক্ষা করার পদ্ধতি:
- কারণসহ ডেটা সংযোগ পরীক্ষা বা সেট করার পদ্ধতি:
- জরুরি নম্বরের তালিকা পাওয়ার পদ্ধতি:
getEmergencyNumberList - সুবিধাবাদী নেটওয়ার্কগুলো নিয়ন্ত্রণের পদ্ধতিসমূহ:
- সেলুলার সিগন্যাল শক্তি আপডেট অনুরোধ সেট বা বাতিল করার পদ্ধতি:
টেলিফোনি কলব্যাক
TelephonyCallback ইন্টারফেসে একটি কলব্যাক মেথড রয়েছে, যা রেজিস্টার্ড স্টেট পরিবর্তিত হলে কলিং অ্যাপকে অবহিত করে:
- বার্তা অপেক্ষার সূচক পরিবর্তিত হয়েছে:
onMessageWaitingIndicatorChanged - কল ফরওয়ার্ডিং সূচক পরিবর্তিত হয়েছে:
onCallForwardingIndicatorChanged - কলের অবস্থা পরিবর্তিত হয়েছে:
onCallStateChanged - আইপি মাল্টিমিডিয়া সিস্টেম (IMS) কল সংযোগ বিচ্ছিন্ন হওয়ার কারণ পরিবর্তিত হয়েছে:
onImsCallDisconnectCauseChanged - টেলিফোনি ডিসপ্লে তথ্য পরিবর্তিত হয়েছে:
onDisplayInfoChanged - সুনির্দিষ্ট ডেটা সংযোগের অবস্থা পরিবর্তিত হয়েছে:
onPreciseDataConnectionStateChanged - বর্তমান জরুরি নম্বর তালিকা পরিবর্তিত হয়েছে:
onEmergencyNumberListChanged - সক্রিয় ডেটা সাবস্ক্রিপশন আইডি পরিবর্তিত হয়েছে:
onActiveDataSubscriptionIdChanged - ক্যারিয়ার নেটওয়ার্ক পরিবর্তিত হয়েছে:
onCarrierNetworkChange - নেটওয়ার্ক নিবন্ধন অথবা অবস্থান/রাউটিং/ট্র্যাকিং এলাকা আপডেট ব্যর্থ হয়েছে:
onRegistrationFailed - ব্যারিং তথ্যের পরিবর্তন:
onBarringInfoChanged - সেলের তথ্য পরিবর্তিত হয়েছে:
onCellInfoChanged - বর্তমান ফিজিক্যাল চ্যানেল কনফিগারেশন পরিবর্তিত হয়েছে:
onPhysicalChannelConfigChanged
সাবস্ক্রিপশন ম্যানেজার
- বিভিন্ন সাবস্ক্রিপশন তথ্য পাওয়ার পদ্ধতি:
- সক্রিয় সাবস্ক্রিপশনের সংখ্যা জানার পদ্ধতি:
getActiveSubscriptionInfoCount - সাবস্ক্রিপশন গ্রুপ পরিচালনা করার পদ্ধতি:
- একটি ক্যারিয়ার এবং একজন নির্দিষ্ট গ্রাহকের মধ্যেকার বিলিং সম্পর্ক পরিকল্পনার বিবরণ পাওয়ার বা সেট করার পদ্ধতিসমূহ:
- কোনো ক্যারিয়ার এবং একজন নির্দিষ্ট গ্রাহককে আনমিটারড হিসেবে বিবেচনা করার জন্য তাদের মধ্যকার বিলিং সম্পর্ক পরিকল্পনা সাময়িকভাবে ওভাররাইড করার পদ্ধতি:
setSubscriptionOverrideUnmetered - কোনো ক্যারিয়ার এবং একজন নির্দিষ্ট গ্রাহকের মধ্যেকার বিলিং সম্পর্ক প্ল্যানকে সাময়িকভাবে ওভাররাইড করে কনজেস্টেড হিসেবে বিবেচনা করার পদ্ধতি:
setSubscriptionOverrideCongested - মেটাডেটা অনুসারে, প্রদত্ত কনটেক্সট সহ অ্যাপটি প্রদত্ত সাবস্ক্রিপশনটি পরিচালনা করার জন্য অনুমোদিত কিনা তা যাচাই করার পদ্ধতি:
canManageSubscription
এসএমএস ম্যানেজার
- কলারকে নতুন ইনকামিং এসএমএস বার্তা তৈরি করার সুযোগ দেওয়ার পদ্ধতি:
injectSmsPdu। - এসএমএস প্রোভাইডারে না লিখে টেক্সট-ভিত্তিক এসএমএস বার্তা পাঠানোর পদ্ধতি:
sendTextMessageWithoutPersisting
ক্যারিয়ার কনফিগ ম্যানেজার
- কনফিগারেশন পরিবর্তনের বিজ্ঞপ্তি জানানোর পদ্ধতি:
notifyConfigChangedForSubId. - ডিফল্ট সাবস্ক্রিপশনের জন্য ক্যারিয়ার কনফিগারেশন পাওয়ার পদ্ধতি:
getConfig - নির্দিষ্ট সাবস্ক্রিপশনের জন্য ক্যারিয়ার কনফিগারেশন পাওয়ার পদ্ধতি:
getConfigForSubId
নির্দেশাবলীর জন্য, ক্যারিয়ার কনফিগারেশন দেখুন।
নির্মাণ করুন
হার্ডওয়্যারের সিরিয়াল নম্বর পাওয়ার পদ্ধতি, যদি উপলব্ধ থাকে: getSerial
বাগরিপোর্টম্যানেজার
কানেক্টিভিটি বাগ রিপোর্ট শুরু করার পদ্ধতি, যা বাগ রিপোর্টের একটি বিশেষ সংস্করণ এবং এতে শুধুমাত্র কানেক্টিভিটি-সম্পর্কিত সমস্যা ডিবাগ করার জন্য তথ্য অন্তর্ভুক্ত থাকে: startConnectivityBugreport
নেটওয়ার্কস্ট্যাটসম্যানেজার
- নেটওয়ার্ক ব্যবহারের সারাংশ জিজ্ঞাসা করার পদ্ধতি:
querySummary - নেটওয়ার্ক ব্যবহারের ইতিহাস জানার পদ্ধতি:
queryDetails - নেটওয়ার্ক ব্যবহারের কলব্যাক নিবন্ধন বা অনিবন্ধন করার পদ্ধতি:
ImsMmTelManager
- IMS সেটিংস জিজ্ঞাসা করার পদ্ধতি:
- IMS MmTel রেজিস্ট্রেশন কলব্যাক নিবন্ধন বা অনিবন্ধন করার পদ্ধতি:
ImsRcsManager
- IMS RCS রেজিস্ট্রেশন কলব্যাক নিবন্ধন বা অনিবন্ধন করার পদ্ধতি:
- IMS রেজিস্ট্রেশনের অবস্থা বা ট্রান্সপোর্ট টাইপ জানার পদ্ধতি:
প্রোভিশনিং ম্যানেজার
- IMS ফিচার প্রোভিশনিং আপডেট কলব্যাক নিবন্ধন এবং অনিবন্ধন করার পদ্ধতি:
- IMS MmTel বা RCS সক্ষমতার প্রোভিশনিং স্ট্যাটাস সম্পর্কিত পদ্ধতিসমূহ:
ইউইকম্যানেজার
প্রদত্ত সাবস্ক্রিপশনটি চালু করার পদ্ধতি: switchToSubscription
ক্যারিয়ার মেসেজিং সার্ভিস
নতুন এসএমএস এবং এমএমএস পাঠানো বা গ্রহণ করা হলে সিস্টেম থেকে কল গ্রহণ করার সার্ভিস। এই ক্লাসটি এক্সটেন্ড করতে, আপনার ম্যানিফেস্ট ফাইলে android.Manifest.permission#BIND_CARRIER_MESSAGING_SERVICE পারমিশন সহ সার্ভিসটি ডিক্লেয়ার করুন এবং #SERVICE_INTERFACE অ্যাকশন সহ একটি ইন্টেন্ট ফিল্টার অন্তর্ভুক্ত করুন। মেথডগুলোর মধ্যে রয়েছে:
- ইনকামিং এসএমএস বার্তা ফিল্টার করার পদ্ধতি:
onFilterSms - ডিভাইস থেকে পাঠানো টেক্সট এসএমএস বার্তা আটকানোর পদ্ধতি:
onSendTextSms - ডিভাইস থেকে পাঠানো বাইনারি এসএমএস বার্তা আটকানোর পদ্ধতি:
onSendDataSms - ডিভাইস থেকে পাঠানো দীর্ঘ এসএমএস বার্তা আটকানোর পদ্ধতি:
onSendMultipartTextSms - ডিভাইস থেকে পাঠানো এমএমএস বার্তা আটকানোর পদ্ধতি:
onSendMms - প্রাপ্ত MMS বার্তা ডাউনলোড করার পদ্ধতি:
onDownloadMms
ক্যারিয়ারসার্ভিস
এমন একটি সার্ভিস যা সিস্টেমের কাছে ক্যারিয়ার-নির্দিষ্ট কার্যকারিতাগুলো প্রকাশ করে। এই ক্লাসটি এক্সটেন্ড করতে, অ্যাপ ম্যানিফেস্ট ফাইলে android.Manifest.permission#BIND_CARRIER_SERVICES পারমিশনসহ সার্ভিসটি ডিক্লেয়ার করুন এবং CARRIER_SERVICE_INTERFACE অ্যাকশনসহ একটি ইন্টেন্ট ফিল্টার অন্তর্ভুক্ত করুন। যদি সার্ভিসটির একটি লং-লিভড বাইন্ডিং থাকে, তাহলে সার্ভিসটির মেটাডেটাতে android.service.carrier.LONG_LIVED_BINDING কে true সেট করুন।
প্ল্যাটফর্মটি ক্যারিয়ার সার্ভিস প্রসেসকে একটি বিশেষ অ্যাপ স্ট্যান্ডবাই বাকেটে চালানোর জন্য বিশেষ ফ্ল্যাগের মাধ্যমে CarrierService বাইন্ড করে। এটি ক্যারিয়ার সার্ভিস অ্যাপকে অ্যাপ আইডল সীমাবদ্ধতা থেকে অব্যাহতি দেয় এবং ডিভাইসের মেমরি কম থাকলেও এর সচল থাকার সম্ভাবনা বাড়িয়ে তোলে। তবে, যদি ক্যারিয়ার সার্ভিস অ্যাপটি কোনো কারণে ক্র্যাশ করে, তাহলে অ্যাপটি পুনরায় চালু হয়ে বাইন্ডিংটি পুনঃপ্রতিষ্ঠিত না হওয়া পর্যন্ত এটি উপরের সমস্ত সুবিধা হারায়। তাই ক্যারিয়ার সার্ভিস অ্যাপটিকে স্থিতিশীল রাখা অত্যন্ত গুরুত্বপূর্ণ।
CarrierService এর পদ্ধতিগুলোর মধ্যে রয়েছে:
- ক্যারিয়ার-নির্দিষ্ট কনফিগারেশন ওভাররাইড ও সেট করতে:
onLoadConfig - ক্যারিয়ার অ্যাপের মাধ্যমে ইচ্ছাকৃতভাবে আসন্ন ক্যারিয়ার নেটওয়ার্ক পরিবর্তনের বিষয়ে সিস্টেমকে জানাতে:
notifyCarrierNetworkChange
টেলিফোনি প্রদানকারী
টেলিফোনি ডেটাবেসে পরিবর্তন (সন্নিবেশ, মুছে ফেলা, হালনাগাদ, অনুসন্ধান) করার জন্য কন্টেন্ট প্রোভাইডার এপিআই। ভ্যালু ফিল্ডগুলো Telephony.Carriers এ সংজ্ঞায়িত করা আছে; আরও বিস্তারিত জানতে, Telephony ক্লাস রেফারেন্স দেখুন।
ওয়াইফাই নেটওয়ার্ক পরামর্শ
একটি WifiNetworkSuggestion অবজেক্ট তৈরি করার সময়, একটি সাবস্ক্রিপশন আইডি বা একটি সাবস্ক্রিপশন গ্রুপ সেট করতে নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করুন:
- সাবস্ক্রিপশন আইডি সেট করার পদ্ধতি:
setSubscriptionId - সাবস্ক্রিপশন গ্রুপ সেট করার পদ্ধতি:
setSubscriptionGroup
অ্যান্ড্রয়েড প্ল্যাটফর্ম
শনাক্তকৃত UICC-তে, প্ল্যাটফর্মটি অভ্যন্তরীণ UICC অবজেক্ট তৈরি করে, যার মধ্যে UICC-এর অংশ হিসেবে ক্যারিয়ার প্রিভিলেজ রুলস অন্তর্ভুক্ত থাকে। UiccCarrierPrivilegeRules.java রুলসগুলো লোড করে, UICC কার্ড থেকে সেগুলো পার্স করে এবং মেমরিতে ক্যাশ করে রাখে। যখন প্রিভিলেজ চেকের প্রয়োজন হয়, UiccCarrierPrivilegeRules কলার সার্টিফিকেটটিকে তার নিজের রুলসের সাথে এক এক করে তুলনা করে। যদি UICC-টি সরিয়ে ফেলা হয়, তাহলে UICC অবজেক্টের সাথে রুলসগুলোও ধ্বংস হয়ে যায়।
বৈধতা
CtsCarrierApiTestCases.apk ব্যবহার করে কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS)- এর মাধ্যমে ইমপ্লিমেন্টেশনটি ভ্যালিডেট করার জন্য, আপনার অবশ্যই সঠিক UICC রুলস বা ARF সাপোর্টসহ একটি ডেভেলপার UICC থাকতে হবে। এই বিভাগে বর্ণিত পদ্ধতি অনুযায়ী সঠিক ARF সহ একটি ডেভেলপার UICC প্রস্তুত করার জন্য আপনার পছন্দের সিম কার্ড ভেন্ডরকে বলুন এবং সেই UICC ব্যবহার করে টেস্টগুলো চালান। CTS টেস্ট পাস করার জন্য UICC-টির সক্রিয় সেলুলার সার্ভিসের প্রয়োজন নেই।
UICC প্রস্তুত করুন
Android 11 এবং এর নিচের সংস্করণগুলোর জন্য, CtsCarrierApiTestCases.apk ফাইলটি aosp-testkey দ্বারা স্বাক্ষরিত, যার হ্যাশ মান হলো 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81 ।
অ্যান্ড্রয়েড ১২ থেকে, CtsCarrierApiTestCases.apk ফাইলটি cts-uicc-2021-testkey দ্বারা স্বাক্ষরিত, যার হ্যাশ মান CE:7B:2B:47:AE:2B:75:52:C8:F9:2C:C2:91:24:27:98:83:04:1F:B6:23:A5:F1:94:A8:2C:9B:F1:5D:49:2A:A0
Android 12-এ CTS ক্যারিয়ার API টেস্ট চালানোর জন্য, ডিভাইসটিতে এমন একটি সিম ব্যবহার করতে হবে যেটিতে CTS ক্যারিয়ারের সুবিধা রয়েছে এবং যা থার্ড-পার্টি GSMA TS.48 টেস্ট প্রোফাইল স্পেসিফিকেশনের সর্বশেষ সংস্করণে উল্লেখিত প্রয়োজনীয়তা পূরণ করে, যার একটি নির্দিষ্ট ADM1, কী = 55555555 / 0x3535353535353535 ।
একই সিম অ্যান্ড্রয়েড ১২-এর পূর্ববর্তী সংস্করণগুলোতেও ব্যবহার করা যাবে।
CTS সিম প্রোফাইল পরিবর্তন করুন
- অ্যাক্সেস রুল অ্যাপ মাস্টার (ARA-M) বা ARF-এ CTS ক্যারিয়ার প্রিভিলেজ যোগ করুন । উভয় সিগনেচার অবশ্যই ক্যারিয়ার প্রিভিলেজ রুলগুলিতে এনকোড করা থাকতে হবে:
- Hash1(SHA1):
61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81 - Hash2(SHA256):
CE:7B:2B:47:AE:2B:75:52:C8:F9:2C:C2:91:24:27:98:83:04:1F:B6:23:A5:F1:94:A8:2C:9B:F1:5D:49:2A:A0
- Hash1(SHA1):
- তৈরি করুন: ADF USIM এলিমেন্টারি ফাইল (EFs) যা TS.48-এ নেই এবং CTS-এর জন্য প্রয়োজন:
- EF_MBDN (6FC7), রেকর্ডের আকার: ২৮, রেকর্ড নম্বর: ৪
- বিষয়বস্তু
- Rec1: 566F696365204D61696CFFFFFFFF06915155555555FF…FF
- Rec2-n: FF…FF
- বিষয়বস্তু
- EF_EXT6 (6FC8), রেকর্ডের আকার: ১৩, রেকর্ড নম্বর: ১
- বিষয়বস্তু: 00FF…FF
- EF_MBI (6FC9), রেকর্ডের আকার: 4, রেকর্ড নম্বর: 1
- বিষয়বস্তু: Rec1: 01010101
- EF_MWIS (6FCA), রেকর্ডের আকার: 5, রেকর্ড নম্বর: 1
- বিষয়বস্তু: 0000000000
- বিষয়বস্তু: 00FF…FF
- EF_MBDN (6FC7), রেকর্ডের আকার: ২৮, রেকর্ড নম্বর: ৪
- পরিবর্তন করুন: USIM পরিষেবা সারণী: ৪৭ ও ৪৮ নং পরিষেবা সক্রিয় করুন
- EF_UST (6F38)
- বিষয়বস্তু:
9EFFBF1DFFFE0083410310010400406E01
- বিষয়বস্তু:
- EF_UST (6F38)
- পরিবর্তন করুন: DF-5GS এবং DF-SAIP ফাইলগুলো
- DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
- বিষয়বস্তু:
FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
- বিষয়বস্তু:
- DF-5GS - EF_5GSN3GPPLOCI (USIM/5FC0/4F02)
- বিষয়বস্তু:
FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
- বিষয়বস্তু:
- DF-5GS - EF SUCI_Calc_Info (USIM/5FC0/4F07)
- বিষয়বস্তু:
A0020000FF…FF
- বিষয়বস্তু:
- DF-SAIP - EF SUCI_Calc_Info_USIM (USIM/5FD0/4F01)
- বিষয়বস্তু:
A0020000FF…FF
- বিষয়বস্তু:
- DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
- পরিবর্তন করুন: এই পদবি ধারণকারী সংশ্লিষ্ট EF-গুলিতে Android CTS ক্যারিয়ার নেম স্ট্রিংটি ব্যবহার করুন:
- EF_SPN (USIM/6F46)
- বিষয়বস্তু:
01416E64726F696420435453FF..FF
- বিষয়বস্তু:
- EF_PNN (USIM/6FC5)
- বিষয়বস্তু:
Rec1 430B83413759FE4E934143EA14FF..FF
- বিষয়বস্তু:
- EF_SPN (USIM/6F46)
পরীক্ষার প্রোফাইলের কাঠামোর সাথে মেলান
নিম্নলিখিত জেনেরিক টেস্ট প্রোফাইল স্ট্রাকচারগুলোর সর্বশেষ সংস্করণ ডাউনলোড করে মিলিয়ে নিন। এই প্রোফাইলগুলোতে ব্যক্তিগতকৃত CTS ক্যারিয়ার প্রিভিলেজ রুল বা উপরে তালিকাভুক্ত অন্যান্য পরিবর্তনগুলো থাকবে না।
পরীক্ষা চালান
সুবিধার জন্য, CTS একটি ডিভাইস টোকেন সমর্থন করে যা শুধুমাত্র একই টোকেন দিয়ে কনফিগার করা ডিভাইসগুলিতেই টেস্ট চালানোর অনুমতি দেয়। ক্যারিয়ার এপিআই CTS টেস্টগুলি sim-card-with-certs ডিভাইস টোকেনটি সমর্থন করে। উদাহরণস্বরূপ, নিম্নলিখিত ডিভাইস টোকেনটি ক্যারিয়ার এপিআই টেস্টগুলিকে শুধুমাত্র abcd1234 ডিভাইসে চালানোর জন্য সীমাবদ্ধ করে:
cts-tradefed run cts --device-token abcd1234:sim-card-with-certs
ডিভাইস টোকেন ব্যবহার না করে কোনো পরীক্ষা চালালে, পরীক্ষাটি সব ডিভাইসে চলে।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
UICC-তে সার্টিফিকেটগুলো কীভাবে আপডেট করা যায়?
এ: বিদ্যমান কার্ড ওটিএ আপডেট পদ্ধতিটি ব্যবহার করুন।
UICC কি অন্যান্য নিয়মের সাথে সহাবস্থান করতে পারে?
এ: একই AID-এর অধীনে UICC-তে অন্যান্য নিরাপত্তা নিয়ম থাকলে কোনো সমস্যা নেই; প্ল্যাটফর্মটি স্বয়ংক্রিয়ভাবে সেগুলোকে ফিল্টার করে বাদ দিয়ে দেয়।
যে অ্যাপটি UICC সার্টিফিকেটের উপর নির্ভর করে, তার থেকে UICC সরিয়ে ফেলা হলে কী হয়?
এ: অ্যাপটি তার বিশেষাধিকার হারায়, কারণ UICC অপসারণ করা হলে এর সাথে যুক্ত নিয়মগুলো নষ্ট হয়ে যায়।
UICC-তে সার্টিফিকেটের সংখ্যার কি কোনো সীমা আছে?
প্ল্যাটফর্মটি সার্টিফিকেটের সংখ্যা সীমিত করে না; কিন্তু যেহেতু যাচাই প্রক্রিয়াটি রৈখিক, তাই অতিরিক্ত নিয়মের কারণে যাচাইয়ে বিলম্ব হতে পারে।
এই পদ্ধতিতে আমরা কতগুলো এপিআই সমর্থন করতে পারব তার কি কোনো সীমা আছে?
না, তবে আমরা এর পরিধি ক্যারিয়ার-সম্পর্কিত এপিআই-এর মধ্যে সীমাবদ্ধ রাখি।
এমন কোনো এপিআই আছে কি যা এই পদ্ধতিতে ব্যবহার করা নিষিদ্ধ? যদি থাকে, তবে আপনারা কীভাবে তা কার্যকর করেন? (অর্থাৎ, এই পদ্ধতিতে কোন কোন এপিআই সমর্থিত তা যাচাই করার জন্য আপনাদের কি কোনো পরীক্ষা ব্যবস্থা আছে?)
এ: অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (CDD)-এর এপিআই বিহেভিওরাল কম্প্যাটিবিলিটি সেকশনটি দেখুন। এপিআইগুলোর পারমিশন মডেল যাতে পরিবর্তিত না হয়, তা নিশ্চিত করার জন্য আমাদের কিছু CTS টেস্ট রয়েছে।
মাল্টি-সিম ফিচারের সাথে এটি কীভাবে কাজ করে?
এ: ব্যবহারকারীর দ্বারা নির্দিষ্ট করা ডিফল্ট সিমটি ব্যবহৃত হয়।
এটি কি কোনোভাবে অন্যান্য SE অ্যাক্সেস প্রযুক্তি, যেমন SEEK-এর সাথে মিথস্ক্রিয়া করে বা ওভারল্যাপ করে?
উদাহরণস্বরূপ, SEEK, UICC-এর মতোই একই AID ব্যবহার করে। তাই নিয়মগুলো সহাবস্থান করে এবং SEEK অথবা UiccCarrierPrivileges দ্বারা ফিল্টার করা হয়।
ক্যারিয়ার প্রিভিলেজ চেক করার উপযুক্ত সময় কখন?
এ: সিমের অবস্থা লোড হওয়ার পর সম্প্রচার করা হয়।
OEM-রা কি ক্যারিয়ার API-এর অংশবিশেষ নিষ্ক্রিয় করতে পারে?
না। আমরা মনে করি যে বর্তমান এপিআইগুলোই ন্যূনতম সেট, এবং ভবিষ্যতে আমরা আরও সূক্ষ্ম নিয়ন্ত্রণের জন্য বিট মাস্ক ব্যবহার করার পরিকল্পনা করছি।
setOperatorBrandOverride কি অপারেটর নামের স্ট্রিং-এর অন্য সব রূপকে ওভাররাইড করে? যেমন, SE13, UICC SPN, বা নেটওয়ার্ক-ভিত্তিক NITZ?
হ্যাঁ, অপারেটর ব্র্যান্ড ওভাররাইডের অগ্রাধিকার সর্বোচ্চ। এটি সেট করা হলে, এটি অপারেটরের নামের অন্য সব ধরনের স্ট্রিংকে ওভাররাইড করে দেয়।
injectSmsPdu মেথড কলটি কী করে?
এই পদ্ধতিটি ক্লাউডে এসএমএস ব্যাকআপ/রিস্টোর করতে সাহায্য করে। injectSmsPdu কলটি রিস্টোর ফাংশনটি সক্রিয় করে।
এসএমএস ফিল্টারিংয়ের ক্ষেত্রে, onFilterSms কলটি কি এসএমএস ইউডিএইচ পোর্ট ফিল্টারিংয়ের ওপর ভিত্তি করে কাজ করে? নাকি ক্যারিয়ার অ্যাপগুলোর সমস্ত ইনকামিং এসএমএস-এ অ্যাক্সেস আছে?
এ: পরিষেবা প্রদানকারীদের সমস্ত এসএমএস ডেটাতে প্রবেশাধিকার রয়েছে।
DeviceAppID-REF-DO ৩২ বাইট সমর্থন করার জন্য সম্প্রসারণটি বর্তমান GP স্পেসিফিকেশনের (যা কেবল ০ বা ২০ বাইট অনুমোদন করে) সাথে বেমানান বলে মনে হচ্ছে, তাহলে আপনারা এই পরিবর্তনটি কেন আনছেন? সংঘর্ষ এড়ানোর জন্য SHA-1 কি যথেষ্ট নয়? আপনারা কি ইতিমধ্যেই GP-এর কাছে এই পরিবর্তনটি প্রস্তাব করেছেন, কারণ এটি বিদ্যমান ARA-M/ARF-এর সাথে পশ্চাৎমুখী বেমানান হতে পারে?
ভবিষ্যৎ-উপযোগী নিরাপত্তা প্রদানের জন্য, এই এক্সটেনশনটি SHA-1-এর পাশাপাশি DeviceAppID-REF-DO এর জন্য SHA-256 চালু করেছে, যা বর্তমানে GP SEAC স্ট্যান্ডার্ডে একমাত্র বিকল্প। আমরা SHA-256 ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করছি।
যদি DeviceAppID মান 0 (খালি) হয়, তাহলে কি আপনি কোনো নির্দিষ্ট নিয়মের আওতাভুক্ত নয় এমন সমস্ত ডিভাইস অ্যাপের ক্ষেত্রে নিয়মটি প্রয়োগ করেন?
ক্যারিয়ার এপিআই-এর জন্য DeviceAppID-REF-DO পূরণ করা আবশ্যক। এটি খালি রাখা শুধুমাত্র পরীক্ষার উদ্দেশ্যে করা হয় এবং অপারেশনাল ডেপ্লয়মেন্টের জন্য এটি সুপারিশ করা হয় না।
আপনার স্পেসিফিকেশন অনুযায়ী, DeviceAppID-REF-DO PKG-REF-DO ব্যবহার করা হলে তা গ্রহণযোগ্য হওয়ার কথা নয়। কিন্তু স্পেসিফিকেশনের টেবিল ৬-৪-এ এটিকে REF-DO এর সংজ্ঞা সম্প্রসারণকারী হিসেবে বর্ণনা করা হয়েছে। এটা কি ইচ্ছাকৃত? REF-DO তে শুধু PKG-REF-DO ব্যবহার করা হলে কোডটি কীভাবে কাজ করে?
সর্বশেষ সংস্করণে REF-DO তে PKG-REF-DO একটি একক মান আইটেম হিসেবে রাখার বিকল্পটি সরিয়ে দেওয়া হয়েছে। PKG-REF-DO শুধুমাত্র DeviceAppID-REF-DO এর সাথেই থাকতে পারবে।
আমরা ধরে নিচ্ছি যে আমরা সমস্ত ক্যারিয়ার-ভিত্তিক অনুমতি প্রদান করতে পারি অথবা আরও সূক্ষ্ম নিয়ন্ত্রণ রাখতে পারি। যদি তাই হয়, তাহলে বিট মাস্ক এবং প্রকৃত অনুমতির মধ্যেকার ম্যাপিংটি কিসের উপর নির্ভর করে? প্রতিটি ক্লাসের জন্য একটি করে অনুমতি? প্রতিটি মেথডের জন্য একটি করে অনুমতি? দীর্ঘমেয়াদে ৬৪টি পৃথক অনুমতি কি যথেষ্ট?
এ: এটি ভবিষ্যতের জন্য সংরক্ষিত, এবং আমরা পরামর্শকে স্বাগত জানাই।
আপনি কি বিশেষভাবে অ্যান্ড্রয়েডের জন্য DeviceAppID সংজ্ঞা আরও বিশদভাবে দিতে পারেন? এটি হলো প্রদত্ত অ্যাপটিতে স্বাক্ষর করতে ব্যবহৃত পাবলিশার সার্টিফিকেটের SHA-1 (২০ বাইট) হ্যাশ ভ্যালু, সুতরাং নামটি কি সেই উদ্দেশ্যকে প্রতিফলিত করবে না? (নামটি অনেক পাঠকের কাছে বিভ্রান্তিকর হতে পারে, কারণ সেক্ষেত্রে নিয়মটি সেই একই পাবলিশার সার্টিফিকেট দিয়ে স্বাক্ষরিত সমস্ত অ্যাপের ক্ষেত্রেই প্রযোজ্য হবে।)
এ: সার্টিফিকেট সংরক্ষণকারী DeviceAppID বিদ্যমান স্পেক দ্বারা সমর্থিত। আমরা স্পেকের পরিবর্তনগুলো ন্যূনতম রাখার চেষ্টা করেছি যাতে এটি গ্রহণ করার বাধা কমে। বিস্তারিত জানতে, UICC-এর নিয়মাবলী দেখুন।