অ্যান্ড্রয়েড কন্টাক্ট পিকার একটি স্ট্যান্ডার্ড, গোপনীয়তা-সংরক্ষক ইন্টারফেস প্রদান করে, যার মাধ্যমে ব্যবহারকারীরা অ্যাপের সাথে নির্দিষ্ট কন্টাক্ট শেয়ার করতে পারেন। অ্যান্ড্রয়েড ১৭-এ চালু হওয়া এই ফিচারটি ব্যাপক READ_CONTACTS পারমিশনের একটি অনুমতি-মুক্ত বিকল্প হিসেবে কাজ করে।
কন্টাক্ট পিকার ব্যবহার করে অ্যাপগুলো নির্দিষ্ট কন্টাক্ট ডেটা, যেমন ফোন নম্বর বা ইমেল অ্যাড্রেস, অ্যাক্সেস করার জন্য অনুরোধ করতে পারে। ব্যবহারকারী যে কন্টাক্টগুলো শেয়ার করতে চান, সেগুলো নির্বাচন করেন এবং সিস্টেম অ্যাপটিকে শুধুমাত্র সেই বিবরণগুলো সাময়িকভাবে পড়ার অ্যাক্সেস প্রদান করে।
স্থাপত্য
কন্টাক্ট পিকার দুটি প্রধান উপাদান নিয়ে গঠিত:
- পিকার UI অ্যাপ: এই কম্পোনেন্টটি কন্টাক্ট বাছাই করার জন্য ইউজার-ফেসিং ইন্টারফেস হিসেবে কাজ করে।
- সেশন প্রোভাইডার: এই কম্পোনেন্টটি ব্যাকএন্ড সার্ভিস হিসেবে কাজ করে যা অস্থায়ী অ্যাক্সেস সেশন পরিচালনা করে।

চিত্র ১. ক্রম চিত্র
পিকার UI
পিকার UI কন্টাক্ট নির্বাচনের জন্য ইউজার ইন্টারফেস পরিচালনা করে এবং অনুরোধকৃত ডেটা টাইপের উপর ভিত্তি করে ভিউ পূরণ করার জন্য সরাসরি কন্টাক্টস প্রোভাইডারকে কোয়েরি করে। সমর্থিত ভিউগুলোর মধ্যে রয়েছে:
- শুধুমাত্র ফোন নম্বর: ইউজার ইন্টারফেসটি সেইসব কন্টাক্ট প্রদর্শন করে যেগুলিতে ফোন নম্বর রয়েছে।
- শুধুমাত্র ইমেল: ইউজার ইন্টারফেসটি সেইসব কন্ট্যাক্ট প্রদর্শন করে যেগুলিতে ইমেল অ্যাড্রেস রয়েছে।
- নিজস্ব যোগাযোগের তথ্য: ইউজার ইন্টারফেস (UI) অনুরোধ করা নির্দিষ্ট ডেটা ফিল্ডের সাথে মেলে এমন পরিচিতিগুলো প্রদর্শন করে।
এছাড়াও, UI নিম্নলিখিত বৈশিষ্ট্যগুলি সমর্থন করে:
- বর্ণানুক্রমিকভাবে সাজানো তালিকা: যোগাযোগগুলি ডুপ্লিকেট বাদ দিয়ে বর্ণানুক্রমে সাজানো হয়।
- কন্ট্যাক্ট অ্যাভাটার: ইউআই-তে কন্ট্যাক্ট ফটো বা অ্যাভাটার প্রদর্শিত হয়।
- পছন্দের তালিকা: পছন্দের তালিকাটি কন্ট্যাক্ট তালিকার শীর্ষে প্রদর্শিত হয়।
- প্রোফাইল স্যুইচার: এই ফিচারটি ব্যবহারকারীদের বিভিন্ন প্রোফাইল (যেমন, কর্মক্ষেত্র বনাম ব্যক্তিগত) থেকে কন্টাক্ট বেছে নিতে দেয়।
- একক এবং একাধিক নির্বাচন: সিস্টেমটি একক এবং একাধিক নির্বাচন উভয় মোডই সমর্থন করে (ডিফল্ট সীমা ৫০ এবং সর্বোচ্চ সীমা ১০০)।
- নির্বাচন পূর্বরূপ: ব্যবহারকারীরা নিশ্চিত করার আগে তাদের নির্বাচিত পরিচিতিগুলো পূর্বরূপ দেখতে এবং পরিচালনা করতে পারেন।
- দ্রুত স্ক্রোলিং: এই বৈশিষ্ট্যটি পরিচিতি তালিকার মধ্যে দ্রুত চলাচল করতে সক্ষম করে।
- অনুসন্ধান: নির্দিষ্ট পরিচিতি খুঁজে বের করার জন্য একটি সার্চ বার দেওয়া আছে।
- গোপনীয়তা ব্যানার এবং গোপনীয়তার বিস্তারিত পৃষ্ঠা: একটি বাধ্যতামূলক বিজ্ঞপ্তি ব্যবহারকারীদের স্পষ্টভাবে জানিয়ে দেয় যে অ্যাপটি কোন কোন ডেটা ফিল্ডের (যেমন, ফোন নম্বর, ইমেল) জন্য অনুরোধ করছে।
সেশন প্রদানকারী
সেশন প্রোভাইডার ( packages/providers/ContactsProvider ) ক্লায়েন্ট অ্যাপ এবং কন্টাক্টস প্রোভাইডারের মধ্যে একটি নিরাপদ মধ্যস্থতাকারী হিসেবে কাজ করে।
- ভূমিকা: শুধুমাত্র তখনই সেশন প্রোভাইডার ব্যবহার করুন যখন আপনি
Intent.ACTION_PICK_CONTACTSব্যবহার করে পিকারটি চালু করেন। - সেশন ব্যবস্থাপনা: যখন কোনো ব্যবহারকারী কন্ট্যাক্ট নির্বাচন করেন, তখন পিকার UI ক্লায়েন্টের UID-এর সাথে ম্যাপ করা নির্বাচনের ডেটা সেশন প্রোভাইডারে লিখে রাখে।
- ডেটা অ্যাক্সেস: প্রোভাইডারটি পিকারকে একটি
content://com.android.providers.contacts.picker.sessionsURI ফেরত পাঠায়। পিকারটি ক্লায়েন্ট অ্যাপে URI-টি ফেরত পাঠানোর আগে উপযুক্ত রিড ফ্ল্যাগ প্রয়োগ করে। এই URI-টি কন্ট্যাক্টের সমস্ত ডেটা প্রকাশ না করেই, ব্যবহারকারীর নির্বাচিত নির্দিষ্ট ডেটা ফিল্ডগুলিতে অস্থায়ী ও সুনির্দিষ্ট রিড অ্যাক্সেস প্রদান করে। - বিশেষাধিকারপ্রাপ্ত অ্যাক্সেস:
android.permission.MANAGE_CONTACTS_PICKER_SESSIONসিগনেচার এবং বিশেষাধিকারপ্রাপ্ত অনুমতিগুলো সেশন প্রোভাইডারে লেখার অ্যাক্সেসকে সুরক্ষিত করে, যা নিশ্চিত করে যে শুধুমাত্র বিশ্বস্ত সিস্টেম পিকারই সেশন তৈরি করতে পারবে।
একীকরণ
হার্ডওয়্যার নির্মাতা এবং অংশীদারদের অবশ্যই অ্যান্ড্রয়েড ১৭ এবং এর পরবর্তী সংস্করণগুলোর বিল্ডে অ্যান্ড্রয়েড কন্টাক্ট পিকার অন্তর্ভুক্ত করতে হবে।
সমর্থিত উদ্দেশ্য
-
Intent.ACTION_PICK_CONTACTS: অ্যান্ড্রয়েড ১৭ এবং তার পরবর্তী সংস্করণকে লক্ষ্য করে তৈরি অ্যাপগুলির জন্য প্রস্তাবিত ইন্টেন্ট। -
Intent.ACTION_PICK: পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্য রক্ষার জন্য এটি রক্ষণাবেক্ষণ করা হয়। সিস্টেমটি সমর্থিত MIME টাইপগুলোর (ইমেল, ফোন বা কন্টাক্ট) জন্য এই অনুরোধগুলোকে স্বয়ংক্রিয়ভাবে নতুন পিকারের কাছে পাঠিয়ে দেয়।
সেশন ব্যবস্থাপনা
ডিভাইসের স্বাস্থ্য ও গোপনীয়তা বজায় রাখতে, সেশন প্রদানকারী একটি কঠোর ডেটা পরিষ্করণ নীতি প্রয়োগ করে:
- পরিচ্ছন্নতা কার্যক্রম: একটি সিস্টেম জব (
CleanupJobService) ২৪ ঘণ্টার বেশি পুরোনো সেশন ডেটা মুছে ফেলার জন্য পর্যায়ক্রমে চলে। - সারির সীমা: অতিরিক্ত স্টোরেজ ব্যবহার রোধ করতে, সেশন প্রোভাইডার টেবিলের সর্বোচ্চ সারির সংখ্যা ৫০০০-এ সীমাবদ্ধ করা হয়েছে। টেবিলটি এই আকারে পৌঁছালে, সিস্টেম নতুন সেশন ডেটা সন্নিবেশ করার আগে স্বয়ংক্রিয়ভাবে সবচেয়ে পুরানো সারিগুলো ছেঁটে ফেলে।
- স্থায়িত্ব: সেশন ডেটা ক্ষণস্থায়ী। ক্লায়েন্ট অ্যাপগুলো প্রাপ্তির সাথে সাথেই ফেরত আসা যোগাযোগের ডেটা সংরক্ষণ করবে বলে আশা করা হয়।
অনুমতি
সেশন প্রোভাইডারে লেখার অ্যাক্সেসের জন্য android.permission.MANAGE_CONTACTS_PICKER_SESSION পারমিশনটি প্রয়োজন, যা শুধুমাত্র Android Contact Picker প্যাকেজের জন্য সীমাবদ্ধ।
কাস্টমাইজেশন এবং সম্মতি
পার্টনাররা ফন্ট এবং রঙের মতো ভিজ্যুয়াল উপাদানগুলো কাস্টমাইজ করতে পারেন, কিন্তু বাস্তবায়ন অবশ্যই অ্যান্ড্রয়েড সিডিডি সেকশন 3.18.2 (TBD) মেনে চলতে হবে।
বৈধতা
পার্টনারদের অবশ্যই কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) এবং গুগল মোবাইল সার্ভিসেস টেস্ট স্যুট (GTS) উভয়ই ব্যবহার করে তাদের বাস্তবায়ন যাচাই করতে হবে।