Android 10 থেকে শুরু করে, পরিচিতি-সংশ্লিষ্ট ডেটা, পরিচিতি প্রদানকারী কম্পোনেন্ট (কোনও ডিভাইসের পরিচিতি অ্যাপে দেখা ডেটার সোর্স) দ্বারা ম্যানেজ করা হয় এবং Android 9 ও তার আগের ভার্সনের থেকে আলাদাভাবে অ্যাক্সেস করা হয়।
Android 10-এর আগে, অ্যাপগুলি ডেটা অ্যাক্সেস করতে এবং ডিভাইস ও অনলাইন পরিষেবার মধ্যে ডেটা ট্রান্সফার করতে Contacts Provider ব্যবহার করত। Android 10 ফিচারে ডেটা অ্যাক্সেসিবিলিটি সংক্রান্ত পরিবর্তন করা হয়েছে যাতে Contacts Provider ব্যবহার করা সব Android 10 ডিভাইসে ব্যবহারকারীর গোপনীয়তা আরও বাড়ানো যায়। প্রথমত, অন্তর্নিহিত ডেটাবেসে পরিচিতি অ্যাফিনিটি ডেটা নেই। তাই, অ্যাপগুলি এতে লিখতে বা এটি থেকে পড়তে পারে না। পরিবর্তনের মধ্যে এগুলি রয়েছে:
- পরিচিতি প্রদানকারী পরিচিতি-অ্যাফিনিটি-সম্পর্কিত ডেটা রেকর্ড করে না, যেমন কোনও ব্যবহারকারীর সাথে কতবার যোগাযোগ করা হয়েছে, যোগাযোগের শেষ সময়, ব্যবহৃত অ্যাপ, যে ব্যক্তির সাথে যোগাযোগ করা হয়েছে বা এই ধরনের কোনও ঐতিহাসিক ডেটা।
- Contacts Provider
autocomplete API-এর
MultiAutoCompleteTextViewক্লাস ইন্টার্যাকশন কাউন্টার অনুযায়ী কোয়েরি ফলাফল সাজায় না। - Android ফ্রেমওয়ার্কের মধ্যে পরিচিতি সংক্রান্ত পরোক্ষ র্যাংকিংয়ের সুবিধা নেই। (তবে, ব্যবহারকারী-নিয়ন্ত্রিত, স্পষ্ট পরিচিতি র্যাঙ্কিং (যেমন তারকাচিহ্নিত পরিচিতি) থেকে যায়)।
এইসব পরিবর্তন প্রয়োগ করতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
- লেটেস্ট Contacts Provider ব্যবহার করুন।
- আপনার ভার্সন আপডেট করুন (আপনি ফর্কড ভার্সন ব্যবহার করলে)।
এছাড়াও, বন্ধ হয়ে যাওয়া Contacts Provider ফিচারের উপর নির্ভর করে এমন যেকোনও অ্যাপ আপডেট করুন। বন্ধ করে দেওয়া ফাংশনের বিকল্প হিসেবে কাজ করার জন্য ডিজাইন করা API ভার্সন ব্যবহার করা যায় না।
Android 9 ও তার আগের ভার্সনের জন্য, পরিচিতি প্রদানকারী থেকে পরিচিতি-ইন্টার্যাকশন ডেটা সরানো হয়নি। এর পরিবর্তে, Android 10-এ সমতুল্য সিমুলেট করতে, পরিচিতি-ইন্টার্যাকশন ডেটা মাঝে মাঝে (আনুমানিক দিনে একবার) মুছে ফেলা হয়। পরিচিতি প্রদানকারী এই তথ্য সেভ করে, তবে শুধুমাত্র সাময়িকভাবে।
API পরিবর্তন
এইসব পরিবর্তনের ফলে API-তে বড় ধরনের প্রভাব পড়তে পারে। যেমন, অটোমেটিক পূরণ করার র্যাংকিং ভালভাবে কাজ করবে না। API-এর আচরণে সম্ভাব্য প্রভাবের মধ্যে নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:
- পরিচিতি প্রদানকারী
ContactsContract.Contactsটেবিল কলামে পরিচিতির জন্য বা সেটির সাথে ইন্টার্যাকশনের ক্ষেত্রে ব্যবহারকারীর পছন্দ স্টোর করবে না। - অটোকমপ্লিট API ইন্টার্যাকশন কাউন্টার অনুযায়ী ফলাফল সাজাবে না।
TIMES_CONTACTED/TIMES_USEDএবংLAST_TIME_CONTACTED/LAST_TIME_USEDকলাম আপডেট করা হবে না।- Android 10-এ আপগ্রেড করার পরে এগুলি মুছে যায় (প্রভাবিত কলামের উপর নির্ভর করে
null-এ অথবা 0-তে সেট হয়ে যায়)। - অটোকমপ্লিট কোয়েরি API-তে র্যাঙ্কিং বর্ণানুক্রমিকভাবে সাজানো ফলাফল ফেরায়, কখনওই পছন্দ সংক্রান্ত তথ্যের ভিত্তিতে নয়।
- প্রায়শই যোগাযোগ করা পরিচিতির জন্য API কল (যেমন, ফিল্টার স্ট্রিং
CONTENT_FREQUENT_URIব্যবহার করে) কোনও ফলাফল দেখায় না।
সাধারণত, বন্ধ হয়ে যাওয়া Contacts Provider API এলিমেন্টের কোনওটি যদি কাউন্টার ব্যবহার করে,
তাহলে সেই কাউন্টার (Android 10-এ ব্যবহার করা হলে) 0 দেখায় এবং
কোয়েরি করা হলে 0 রিটার্ন করে। প্রভাবিত API থেকে আসা আপডেটের অনুরোধ উপেক্ষা করা হয়। যেমন, ContactsContract.DataUsageFeedback ক্লাসটি
সচল নেই, তাই এই ক্লাসে আপডেট ও মুছে দেওয়ার কল উপেক্ষা করা হয়।
API-কে প্রভাবিত করে এমন ফিল্ড
Android 10-এ এইসব ফিল্ড পরিবর্তন করা হয়েছে:
ContactsContract.ContactOptionsColumns#TIMES_CONTACTEDContactsContract.ContractOptionsColumns.LAST_TIME_CONTACTEDContactsContract.DataUsageStatColumns#TIMES_USEDContactsContract.DataUsageStatColumns#LAST_TIME_USEDContactsContract#CONTENT_STREQUENT_FILTER_URIContactsContract.Contacts#CONTENT_STREQUENT_URIContactsContract.Contacts#CONTENT_FREQUENT_URIContactsContract.Contacts#ENTERPRISE_CONTENT_FILTER_URIContactsContract.Contacts#CONTENT_FILTER_URI
Android 10-এ প্রভাবিত ফিল্ডগুলি বিভিন্ন API-তে থাকতে পারে, যেমনটি নিচের টেবিলে উল্লেখ করা হয়েছে। বন্ধ করে দেওয়া API ফিল্ড, তালিকাভুক্ত আচরণ রিটার্ন করে। কারণ, এইসব সেকেল ফিল্ডের মধ্যে কোনও একটি আপনার একাধিক API-তে ব্যবহার করা হতে পারে, তাই আপনার ব্যবহারের ক্ষেত্র যাচাই করুন।
| শ্রেণী | API ফিল্ড | ১০টি রিটার্ন |
|---|---|---|
ContactsContract.ContactsContactsContract.RawContactsContactsContract.DataContactsContract.Entity
|
ContactOptionsColumnsTIMES_CONTACTEDLAST_TIME_CONTACTED
|
এইসব কলাম কীভাবে ব্যবহার করা হচ্ছে তা নির্বিশেষে, এগুলিতে সবসময় ০ থাকে। সেগুলিতে পরিবর্তন করার চেষ্টা উপেক্ষা করা হয়। |
Contacts
|
markAsContacted() |
কোনও অপারেশন নেই। |
ContactsContract.DataUsageFeedback
|
|
কোনও অপারেশন নেই। |
ContactsContract.Contacts
|
স্ট্রিকুয়েন্ট (তারকাচিহ্নিত + ঘন ঘন)CONTENT_STREQUENT_FILTER_URICONTENT_STREQUENT_URICONTENT_FREQUENT_URI
|
শুধুমাত্র তারাচিহ্নিত পরিচিতি দেখায়। প্রায়শই যোগাযোগ করা পরিচিতি ফিরিয়ে দেওয়া হয়নি। |
ContactsContract.CommonDataKinds.EmailContactsContract.CommonDataKinds.PhoneContactsContract.CommonDataKinds.Callable
|
ফিল্টার (অটোমেটিক সম্পূর্ণ করাও বলা হয়) API
|
ফলাফল অ্যাফিনিটি অনুযায়ী সাজানো হয়নি। এগুলি তারকাচিহ্নিত ও নাম অনুযায়ী সাজানো হয়। |
বিকল্প
সঞ্চালনের অনুপযুক্ত API ফিল্ডের কোনও বিকল্প নেই। এইসব বিধিনিষেধ এড়িয়ে যাওয়ার জন্য ডিজাইন করা ওয়ার্কঅ্যারাউন্ড, তা নতুন API বা নতুন ফিল্ড যাই হোক না কেন, অনুমোদিত নয়।
প্রয়োগ
এইসব পরিবর্তন প্রয়োগ করার জন্য আপনাকে কিছু করতে হবে না। এগুলি Android OS প্ল্যাটফর্মে ব্যবহারকারীর গোপনীয়তা বাড়ানোর উদ্যোগের অংশ। তবে, আপনার অ্যাপ যদি বাতিল করা ফিচারের উপর নির্ভর করে, তাহলে যেকোনও পরিবর্তনের জন্য ক্ষতিপূরণ দিতে, আপনার অ্যাপ আপডেট করতে হতে পারে। এছাড়াও, আপনি Contacts Provider-এর কোনও ফর্ক করা ভার্সন ব্যবহার করলে, আপনাকে অবশ্যই Contacts Provider আপডেট করতে হবে।
কাস্টমাইজ করা হয়নি
পরিচিতির অ্যাফিনিটি সংক্রান্ত তথ্যে পরিবর্তন কাস্টমাইজ বা এড়িয়ে যাবেন না। এগুলি ফ্রেমওয়ার্কের মধ্যে তৈরি করা হয় এবং কোনও পরিবর্তন করলে তা আপনাকে নিয়ম মেনে চলা থেকে বিরত রাখে। ডিফল্ট সেটিংস কখনও পরিবর্তন করবেন না বা ব্যাকডোর বিকল্প প্রদান করবেন না।