1. Mobil qurilmalar uchun dasturlar Ishlab chiqish muhiti


Mavzu: Aloqa, shaxsiy ma'lumotlar, sinxronizatsiya va ijtimoiy tarmoqlar



Download 27,79 Mb.
bet18/18
Sana24.09.2022
Hajmi27,79 Mb.
#850101
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
Amaliyot mobil qurulmalarni dasturlash

Mavzu: Aloqa, shaxsiy ma'lumotlar, sinxronizatsiya va ijtimoiy tarmoqlar
Reja:
1. Aloqa, shaxsiy ma'lumotlar
2. Sinxronizatsiya va ijtimoiy tarmoqlar
Kontaktlar provayderi kuchli va moslashuvchan Android komponenti boʻlib, u qurilmaning odamlar haqidagi maʼlumotlarning markaziy omborini boshqaradi. Kontaktlar provayderi siz qurilmaning kontaktlar ilovasida koʻriladigan maʼlumotlar manbai boʻlib, siz uning maʼlumotlariga oʻz ilovangizda kirishingiz hamda qurilma va onlayn xizmatlar oʻrtasida maʼlumotlarni uzatishingiz mumkin. Provayder ma'lumotlar manbalarining keng doirasini o'z ichiga oladi va har bir shaxs uchun imkon qadar ko'proq ma'lumotlarni boshqarishga harakat qiladi, natijada uning tashkil etilishi murakkabdir. Shu sababli, provayderning API-si ma'lumotlarni qidirish va o'zgartirishni osonlashtiradigan keng qamrovli shartnoma sinflari va interfeyslarni o'z ichiga oladi.
Ushbu qo'llanmada quyidagilar tasvirlangan:
Asosiy provayder tuzilmasi.
Provayderdan ma'lumotlarni qanday olish mumkin.
Provayderdagi ma'lumotlarni qanday o'zgartirish mumkin.
Serveringizdan Kontaktlar provayderiga ma'lumotlarni sinxronlashtirish uchun sinxronlash adapterini qanday yozish kerak.
Ushbu qo'llanmada siz Android kontent provayderlari asoslarini bilishingiz nazarda tutilgan. Android kontent provayderlari haqida koʻproq bilish uchun Kontent provayderi asoslari qoʻllanmasini oʻqing.
Kontaktlar Provayder tashkiloti
Kontaktlar provayderi Android kontent provayderi komponentidir. U 1-rasmda ko'rsatilganidek, har biri provayder tomonidan taqdim etilgan jadvalga mos keladigan shaxs haqida uch turdagi ma'lumotlarni saqlaydi:

Shakl 1. Kontaktlar Provayder jadvali tuzilishi.


Uchta jadval odatda shartnoma sinflarining nomlari bilan ataladi. Sinflar jadvallar tomonidan ishlatiladigan kontent URI'lari, ustun nomlari va ustun qiymatlari uchun doimiylarni belgilaydi:
ContactsContract.Contacts stol
Turli odamlarni ifodalovchi qatorlar, xom aloqa qatorlarining yig'indisiga asoslangan.
ContactsContract.RawContacts stol
Foydalanuvchi hisobi va turiga xos shaxs maʼlumotlarining qisqacha mazmunini oʻz ichiga olgan qatorlar.
ContactsContract.Data stol
E-pochta manzillari yoki telefon raqamlari kabi xom kontakt tafsilotlarini o'z ichiga olgan qatorlar.
Shartnoma sinflari bilan ifodalangan boshqa jadvallar ContactsContract Kontaktlar Provayderi o'z operatsiyalarini boshqarish yoki qurilma kontaktlari yoki telefoniya ilovalaridagi muayyan funksiyalarni qo'llab-quvvatlash uchun foydalanadigan yordamchi jadvallardir.
Noto'g'ri kontaktlar
Xom kontakt bitta hisob turi va hisob nomidan kelgan shaxs ma'lumotlarini ifodalaydi. Kontaktlar provayderi bir kishi uchun ma'lumotlar manbai sifatida bir nechta onlayn xizmatlarga ruxsat berganligi sababli, Kontaktlar provayderi bir kishi uchun bir nechta xom kontaktlarga ruxsat beradi. Bir nechta xom kontaktlar, shuningdek, foydalanuvchiga bir xil hisob turidagi bir nechta hisoblardagi shaxs ma'lumotlarini birlashtirishga imkon beradi.
Xom kontakt uchun ma'lumotlarning aksariyati ContactsContract.RawContactsjadvalda saqlanmaydi . Buning o'rniga, u ContactsContract.Datajadvaldagi bir yoki bir nechta qatorlarda saqlanadi . Har bir ma'lumot satrida o'zining asosiy satri qiymatini Data.RAW_CONTACT_IDo'z ichiga olgan ustun mavjud . RawContacts._IDContactsContract.RawContacts
Muhim xom aloqa ustunlari
ContactsContract.RawContactsJadvaldagi muhim ustunlar 1-jadvalda keltirilgan. Iltimos, jadvaldan keyingi eslatmalarni o'qing:
Jadval 1. Muhim xom aloqa ustunlari.

Ustun nomi

Foydalanish

Eslatmalar

ACCOUNT_NAME

Ushbu xom kontakt manbasi hisob turi uchun hisob nomi. Masalan, Google hisobining hisob nomi qurilma egasining Gmail manzillaridan biridir. Qo'shimcha ma'lumot olish uchun keyingi yozuvga qarang . ACCOUNT_TYPE

Ushbu nomning formati uning hisob turiga xosdir. Bu elektron pochta manzili bo'lishi shart emas.

ACCOUNT_TYPE

Ushbu xom kontaktning manbai hisob turi. Masalan, Google hisobining hisob turi . O'zingizning hisobingiz turini har doim o'zingiz egalik qiladigan yoki nazorat qiladigan domen identifikatori bilan belgilang. Bu sizning hisobingiz turi noyob bo'lishini ta'minlaydi. com.google

Kontaktlar ma'lumotlarini taklif qiluvchi hisob turi odatda Kontaktlar provayderi bilan sinxronlashadigan bog'langan sinxronlash adapteriga ega.

DELETED

Xom kontakt uchun "o'chirilgan" bayroq.

Bu bayroq Kontaktlar provayderiga sinxronlash adapterlari o‘z serverlaridan qatorni o‘chirib tashlaguncha va nihoyat satrni ombordan o‘chirib tashlaguncha qatorni ichki holatda saqlashga imkon beradi.

Eslatmalar
ContactsContract.RawContactsJadval haqida quyidagi muhim eslatmalar mavjud :
Xom kontaktning nomi uning qatorida saqlanmaydi ContactsContract.RawContacts. Buning o'rniga, u ContactsContract.Datajadvalda, bir ContactsContract.CommonDataKinds.StructuredNameqatorda saqlanadi . Xom kontaktda ContactsContract.Datajadvalda ushbu turdagi faqat bitta qator mavjud .
Ogohlantirish: O'z hisob qaydnomangiz ma'lumotlaridan kontaktlar qatorida foydalanish uchun avvalo AccountManager. Buning uchun foydalanuvchilarga hisob turini va ularning hisob nomini hisoblar ro'yxatiga qo'shishni taklif qiling. Agar buni qilmasangiz, Kontaktlar provayderi dastlabki kontaktlar qatoringizni avtomatik ravishda o‘chirib tashlaydi.
Misol uchun, agar ilovangiz domen bilan veb-asoslangan xizmatingiz uchun kontaktlar maʼlumotlarini saqlab turishini istasangiz va xizmatingiz com.example.dataserviceuchun foydalanuvchi hisobi boʻlsa becky.sharp@dataservice.example.com, foydalanuvchi avval “turi” ( com.example.dataservice) va “nomi” ( becky.smart@dataservice.example.com) hisobini qoʻshishi kerak. ilovangiz xom aloqa qatorlarini qo'shishdan oldin. Siz ushbu talabni foydalanuvchiga hujjatlarda tushuntirishingiz mumkin yoki foydalanuvchidan tur va nomni yoki ikkalasini ham qo'shishni taklif qilishingiz mumkin. Hisob turlari va hisob nomlari keyingi bo'limda batafsil tavsiflanadi.
Xom kontaktlar ma'lumotlari manbalari
Xom kontaktlar qanday ishlashini tushunish uchun qurilmasida quyidagi uchta foydalanuvchi hisobiga ega bo'lgan "Emili Dikkinson" foydalanuvchisini ko'rib chiqing:
emily.dickinson@gmail.com
emilyd@gmail.com
Twitter akkaunti "belle_of_amherst"
Bu foydalanuvchi Hisob sozlamalarida ushbu uchta hisob uchun Kontaktlarni sinxronlash funksiyasini yoqdi.
Faraz qilaylik, Emili Dikkinson brauzer oynasini ochadi, Gmail-ga sifatida kiradi emily.dickinson@gmail.com, Kontaktlarni ochadi va “Tomas Xigginson”ni qo‘shadi. Keyinchalik u Gmail emilyd@gmail.comhisobiga kiradi va uni avtomatik ravishda kontakt sifatida qo'shadigan "Tomas Xigginson" ga elektron pochta xabarini yuboradi. U shuningdek, Twitter’da “colonel_tom” (Tomas Xigginsonning Twitter ID) ni ham kuzatib boradi.
Kontaktlar provayderi ushbu ish natijasida uchta xom kontaktni yaratadi:
bilan bog'liq "Tomas Xigginson" uchun xom aloqa emily.dickinson@gmail.com. Foydalanuvchi hisobi turi - Google.
bilan bog'liq "Tomas Xigginson" uchun ikkinchi xom aloqa emilyd@gmail.com. Foydalanuvchi hisobi turi ham Google hisoblanadi. Ism avvalgi ismga o'xshash bo'lsa ham, ikkinchi xom kontakt mavjud, chunki u boshqa foydalanuvchi hisobi uchun qo'shilgan.
"Belle_of_amherst" bilan bog'liq "Tomas Xigginson" uchun uchinchi xom aloqa. Foydalanuvchi hisobi turi - Twitter.
Ma'lumotlar
Yuqorida aytib o'tilganidek, xom kontakt uchun ma'lumotlar ContactsContract.Dataxom kontaktning _IDqiymatiga bog'langan qatorda saqlanadi . Bu bitta xom kontaktga elektron pochta manzillari yoki telefon raqamlari kabi bir xil turdagi ma'lumotlarning bir nechta nusxalariga ega bo'lish imkonini beradi. Masalan, agar "Tomas Xigginson" uchun emilyd@gmail.com (Tomas Xigginsonning Google hisobi bilan bog'langan xom aloqa qatori emilyd@gmail.com) uy elektron pochta manzili thigg@gmail.comva ish elektron pochta manzili bo'lsa thomas.higginson@gmail.com, Kontaktlar provayderi ikkita elektron pochta manzili qatorini saqlaydi va ikkalasini ham bog'laydi. xom aloqa.
E'tibor bering, har xil turdagi ma'lumotlar ushbu bitta jadvalda saqlanadi. Displey nomi, telefon raqami, elektron pochta manzili, pochta manzili, fotosurat va veb-sayt tafsilotlari qatorlari ContactsContract.Datajadvalda joylashgan. Buni boshqarishga yordam berish uchun ContactsContract.Datajadvalda tavsiflovchi nomli ba'zi ustunlar, boshqalari esa umumiy nomlarga ega. Ta'riflovchi nomli ustunning mazmuni qatordagi ma'lumotlar turidan qat'iy nazar bir xil ma'noga ega, umumiy nomli ustunning mazmuni esa ma'lumotlar turiga qarab har xil ma'noga ega.
Ta'riflovchi ustun nomlari
Ta'riflovchi ustun nomlariga ba'zi misollar:
RAW_CONTACT_ID
_IDUshbu ma'lumotlar uchun xom kontakt ustunining qiymati .
MIMETYPE
Ushbu qatorda saqlangan ma'lumotlar turi, maxsus MIME turi sifatida ifodalangan. Kontaktlar provayderi quyi sinflarda belgilangan MIME turlaridan foydalanadi ContactsContract.CommonDataKinds. Ushbu MIME turlari ochiq manba bo'lib, ular kontaktlar provayderi bilan ishlaydigan har qanday dastur yoki sinxronlash adapteri tomonidan ishlatilishi mumkin.
IS_PRIMARY
Agar ushbu turdagi ma'lumotlar qatori xom kontakt uchun bir necha marta paydo bo'lishi mumkin bo'lsa, IS_PRIMARYustun tur uchun asosiy ma'lumotlarni o'z ichiga olgan ma'lumotlar qatorini belgilaydi. Misol uchun, agar foydalanuvchi kontakt uchun telefon raqamini uzoq bosib tursa va Sukut bo'yicha o'rnatish ni tanlasa , u holda ContactsContract.Dataushbu raqamni o'z ichiga olgan qatorning IS_PRIMARYustuni nolga teng bo'lmagan qiymatga o'rnatiladi.
Umumiy ustun nomlari
U erda nomli 15 umumiy ustunlar bor DATA1orqali DATA15bu odatda mavjud va qo'shimcha to'rt umumiy ustunlar SYNC1orqali SYNC4faqat sinxronlash adapterlari bilan foydalanish kerak. Ustun nomining umumiy konstantalari satrdagi ma'lumotlar turidan qat'iy nazar har doim ishlaydi.
DATA1Ustun kat. Kontaktlar provayderi har doim ushbu ustundan provayder so'rovning eng tez-tez uchraydigan maqsadi bo'lishini kutgan ma'lumotlar uchun foydalanadi. Masalan, elektron pochta qatorida ushbu ustunda haqiqiy elektron pochta manzili mavjud.
An'anaga ko'ra, ustun DATA15ikkilik katta ob'ekt (BLOB) ma'lumotlarini saqlash uchun ajratilgan, masalan, fotosuratlar eskizlari.
Turga xos ustun nomlari
Muayyan turdagi qatorlar uchun ustunlar bilan ishlashni osonlashtirish uchun Kontaktlar provayderi pastki sinflarda aniqlangan turga xos ustun nomi konstantalarini ham taqdim etadi ContactsContract.CommonDataKinds. Konstantalar shunchaki bir xil ustun nomiga boshqa doimiy nom beradi, bu sizga ma'lum turdagi qatordagi ma'lumotlarga kirishga yordam beradi.
Masalan, ContactsContract.CommonDataKinds.Emailsinf ContactsContract.DataMIME turiga ega bo'lgan qator uchun turga xos ustun nomi konstantalarini belgilaydi Email.CONTENT_ITEM_TYPE. Sinf ADDRESSelektron pochta manzili ustuni uchun doimiyni o'z ichiga oladi . ning haqiqiy qiymati ADDRESS"ma'lumotlar1" dir, bu ustunning umumiy nomi bilan bir xil.
Ogohlantirish:ContactsContract.Data Provayder tomonidan oldindan belgilangan MIME turlaridan biriga ega bo'lgan qatordan foydalanib , jadvalga shaxsiy ma'lumotlaringizni qo'shmang . Agar shunday qilsangiz, siz ma'lumotlarni yo'qotishingiz yoki provayderning noto'g'ri ishlashiga olib kelishi mumkin. Misol uchun, Email.CONTENT_ITEM_TYPEustundagi elektron pochta manzili o'rniga foydalanuvchi nomini o'z ichiga olgan MIME turidagi qatorni qo'shmasligingiz kerak DATA1. Agar siz satr uchun o'zingizning shaxsiy MIME turidan foydalansangiz, unda siz o'zingizning turga xos ustun nomlaringizni belgilashingiz va ustunlardan xohlaganingizcha foydalanishingiz mumkin.
2-rasmda tavsiflovchi ustunlar va maʼlumotlar ustunlari ContactsContract.Dataqatorda qanday paydo boʻlishi va turga xos ustun nomlari umumiy ustun nomlarini qanday “qoplamasi” koʻrsatilgan.

Shakl 2. Turga xos ustun nomlari va umumiy ustun nomlari.


Type-specific column name classes
2-jadvalda eng ko'p ishlatiladigan turga xos ustun nomlari sinflari keltirilgan:
Jadval 2. Turga xos ustun nomlari sinflari

Xaritalash sinfi

Ma'lumotlar turi

Eslatmalar

ContactsContract.CommonDataKinds.StructuredName

Bu maʼlumotlar qatori bilan bogʻliq boʻlmagan kontakt nomi maʼlumotlari.

Xom kontaktda bu qatorlardan faqat bittasi mavjud.

ContactsContract.CommonDataKinds.Photo

Bu maʼlumotlar qatori bilan bogʻliq boʻlmagan kontakt uchun asosiy surat.

Xom kontaktda bu qatorlardan faqat bittasi mavjud.

ContactsContract.CommonDataKinds.Email

Ushbu maʼlumotlar qatori bilan bogʻliq boʻlmagan kontakt uchun elektron pochta manzili.

Xom kontaktda bir nechta elektron pochta manzillari bo'lishi mumkin.

ContactsContract.CommonDataKinds.StructuredPostal

Ushbu maʼlumotlar qatori bilan bogʻliq boʻlmagan kontakt uchun pochta manzili.

Xom kontaktda bir nechta pochta manzillari bo'lishi mumkin.

ContactsContract.CommonDataKinds.GroupMembership

Xom kontaktni Kontaktlar provayderidagi guruhlardan biriga bog'laydigan identifikator.

Guruhlar hisob turi va hisob nomining ixtiyoriy xususiyatidir. Ular kontakt guruhlari bo'limida batafsil tavsiflangan .

Contacts
Aloqa Provayder bir shakllantirish uchun barcha hisob turlari va hisob nomlari bo'ylab xom aloqa satr birlashtiradi aloqani . Bu foydalanuvchi shaxs uchun to'plagan barcha ma'lumotlarni ko'rsatish va o'zgartirishni osonlashtiradi. Kontaktlar provayderi yangi kontakt qatorlarini yaratishni va mavjud kontaktlar qatori bilan xom kontaktlarni birlashtirishni boshqaradi. Ilovalarga ham, sinxronlash adapterlariga ham kontakt qo‘shishga ruxsat berilmaydi va kontaktlar qatoridagi ba’zi ustunlar faqat o‘qish uchun mo‘ljallangan.
Eslatma: Kontaktlar provayderiga kontakt qo‘shishga harakat insert()qilsangiz, siz UnsupportedOperationExceptionistisnoga ega bo‘lasiz . Agar siz "faqat o'qish uchun" ro'yxatidagi ustunni yangilashga harakat qilsangiz, yangilanish e'tiborga olinmaydi.
Kontaktlar provayderi mavjud kontaktlarga mos kelmaydigan yangi kontakt qo‘shilishiga javoban yangi kontakt yaratadi. Agar mavjud bo'lmagan kontakt ma'lumotlari u ilgari biriktirilgan kontaktga mos kelmay qoladigan tarzda o'zgarsa, provayder buni ham qiladi. Dastur yoki sinxronlash adapter yangi xom aloqani yaratadi bo'lsa bermaydi Mavjud O'yin o'yin, yangi xom aloqa mavjud kontaktga bir joyga to'playdi.
Kontaktlar provayderi kontaktlar qatorini uning xom aloqa qatorlariga jadvaldagi kontaktlar qatori _IDustuni bilan bog‘laydi Contacts. CONTACT_IDXom kontaktlar suhbati ustun ContactsContract.RawContactso'z ichiga olgan _IDhar bir xom kontaktlar qatorni bilan bog'liq kontaktlar qatorga qiymatlari.
ContactsContract.ContactsStol, shuningdek, ustuni bo'lgan LOOKUP_KEYkontakt liniyada bir "doimiy" bog'laning hisoblanadi. Kontaktlar provayderi kontaktlarni avtomatik ravishda saqlaganligi sababli, u _IDbirlashtirish yoki sinxronlashtirishga javoban kontaktlar qatorining qiymatini o'zgartirishi mumkin . Agar bu sodir bo'lsa ham, CONTENT_LOOKUP_URIkontaktlar bilan birlashtirilgan kontent URI LOOKUP_KEYhali ham kontakt qatoriga ishora qiladi, shuning uchun siz LOOKUP_KEY "sevimli" kontaktlar va hokazolarga havolalarni saqlash uchun foydalanishingiz mumkin . Ushbu ustun ustun formatiga bog'liq bo'lmagan o'z formatiga ega _ID.
3-rasmda uchta asosiy jadvalning bir-biri bilan qanday bog'liqligi ko'rsatilgan.

Shakl 3. Kontaktlar, Raw Kontaktlar va Tafsilotlar jadvali munosabatlari.


Ogohlantirish: Agar ilovangizni Google Play doʻkonida nashr qilsangiz yoki ilovangiz Android 10 (API darajasi 29) yoki undan yuqori versiyada ishlayotgan qurilmada boʻlsa, kontaktlar maʼlumotlari maydonlari va usullarining cheklangan toʻplami eskirganligini yodda tuting.
Ko'rsatilgan shartlarga muvofiq, tizim ushbu ma'lumotlar maydonlariga yozilgan har qanday qiymatlarni vaqti-vaqti bilan tozalaydi:
ContactsContract.ContactOptionsColumns.LAST_TIME_CONTACTED
ContactsContract.ContactOptionsColumns.TIMES_CONTACTED
ContactsContract.DataUsageStatColumns.LAST_TIME_USED
ContactsContract.DataUsageStatColumns.TIMES_USED
Yuqoridagi ma'lumotlar maydonlarini o'rnatish uchun ishlatiladigan API'lar ham eskirgan:
ContactsContract.Contacts.markAsContacted()
ContactsContract.DataUsageFeedback
Bundan tashqari, quyidagi maydonlar endi tez-tez aloqalarni qaytarmaydi. E'tibor bering, ushbu maydonlarning ba'zilari kontaktlar reytingiga faqat kontaktlar ma'lum bir turdagi ma'lumotlarning bir qismi bo'lganda ta'sir qiladi .
ContactsContract.Contacts.CONTENT_FREQUENT_URI
ContactsContract.Contacts.CONTENT_STREQUENT_URI
ContactsContract.Contacts.CONTENT_STREQUENT_FILTER_URI
CONTENT_FILTER_URI(faqat ta'sir elektron pochta , telefon , Callable va Contactables ma'lumotlar turlari)
ENTERPRISE_CONTENT_FILTER_URI(faqat ta'sir Email , Telefon va Callable ma'lumotlar turlarini)
Agar ilovalaringiz ushbu maydonlar yoki API-larga kirayotgan yoki yangilayotgan bo'lsa, muqobil usullardan foydalaning. Masalan, siz shaxsiy kontent provayderlari yoki ilovangizda yoki backend tizimlarida saqlangan boshqa ma'lumotlardan foydalangan holda muayyan foydalanish holatlarini bajarishingiz mumkin .
Ilovangiz funksiyasiga bu oʻzgarish taʼsir qilmasligini tekshirish uchun ushbu maʼlumotlar maydonlarini qoʻlda tozalashingiz mumkin. Buning uchun Android 4.1 (API darajasi 16) yoki undan yuqori versiyada ishlaydigan qurilmada quyidagi ADB buyrug‘ini bajaring:
adb shell content delete \
--uri content://com.android.contacts/contacts/delete_usage
Data From sync adapters
Foydalanuvchilar kontaktlar ma'lumotlarini to'g'ridan-to'g'ri qurilmaga kiritadilar, biroq ma'lumotlar sinxronlash adapterlari orqali veb-xizmatlardan Kontaktlar provayderiga ham kiradi , bu esa qurilma va xizmatlar o'rtasida ma'lumotlarni uzatishni avtomatlashtiradi. Sinxronlash adapterlari tizim nazorati ostida fonda ishlaydi va ular ContentResolverma'lumotlarni boshqarish usullarini chaqiradi .
Androidda sinxronlash adapteri ishlaydigan veb-xizmat hisob turi bilan aniqlanadi. Har bir sinxronlash adapteri bitta hisob turi bilan ishlaydi, lekin u ushbu turdagi bir nechta hisob nomlarini qo'llab-quvvatlashi mumkin. Hisob turlari va hisob nomlari bo'limida qisqacha tavsiflangan Xom kontaktlar ma'lumotlarining manbalari . Quyidagi ta'riflar batafsilroq taqdim etadi va hisob turi va nomi sinxronlash adapterlari va xizmatlariga qanday bog'liqligini tasvirlaydi.
Hisob turi
Foydalanuvchi ma'lumotlarni saqlagan xizmatni aniqlaydi. Ko'pincha foydalanuvchi xizmat bilan autentifikatsiya qilishi kerak. Masalan, Google Contacts - bu kod bilan aniqlangan hisob turi google.com. Bu qiymat foydalanadigan hisob turiga mos keladi AccountManager.
Hisob nomi
Hisob turi uchun ma'lum hisob yoki loginni aniqlaydi. Google Contacts hisoblari hisob nomi sifatida elektron pochta manziliga ega bo'lgan Google hisoblari bilan bir xil. Boshqa xizmatlar bir so'zli foydalanuvchi nomi yoki raqamli identifikatordan foydalanishi mumkin.
Hisob turlari noyob bo'lishi shart emas. Foydalanuvchi bir nechta Google Contacts hisoblarini sozlashi va ularning ma'lumotlarini Kontaktlar provayderiga yuklab olishi mumkin; Agar foydalanuvchi shaxsiy hisob nomi uchun shaxsiy kontaktlar to'plamiga va ish uchun boshqa to'plamga ega bo'lsa, bu sodir bo'lishi mumkin. Hisob nomlari odatda noyobdir. Birgalikda ular Kontaktlar provayderi va tashqi xizmat o'rtasida ma'lum ma'lumotlar oqimini aniqlaydilar.
Agar xizmatingiz ma'lumotlarini Kontaktlar provayderiga o'tkazmoqchi bo'lsangiz, o'zingizning sinxronlash adapteringizni yozishingiz kerak. Bu bo'limda batafsil tavsiflangan Kontaktlar provayderi sinxronlash adapterlari .
4-rasmda kontaktlar provayderi odamlar haqidagi ma'lumotlar oqimiga qanday mos kelishi ko'rsatilgan. "Sinxronlash adapterlari" deb belgilangan qutida har bir adapter o'z hisob turi bo'yicha etiketlanadi.

Shakl 4. Kontaktlar provayderi ma'lumotlar oqimi.


Kerakli ruxsatlar
Kontaktlar provayderiga kirishni istagan ilovalar quyidagi ruxsatlarni so‘rashi kerak:
Bir yoki bir nechta jadvallarni o'qish uchun ruxsat
READ_CONTACTS, sifatida element AndroidManifest.xmlbilan belgilangan . 
Bir yoki bir nechta jadvallarga yozish huquqi
WRITE_CONTACTS, sifatida element AndroidManifest.xmlbilan belgilangan . 
Ushbu ruxsatlar foydalanuvchi profili ma'lumotlariga taalluqli emas. Foydalanuvchi profili va uning talab qilinadigan ruxsatlari quyidagi bo'limda muhokama qilinadi, Foydalanuvchi profili .
Esda tutingki, foydalanuvchining kontakt ma'lumotlari shaxsiy va maxfiydir. Foydalanuvchilar o'zlarining maxfiyligi haqida qayg'uradilar, shuning uchun ular ilovalar o'zlari yoki kontaktlari haqida ma'lumotlarni yig'ishini xohlamaydilar. Agar ularning kontaktlari ma'lumotlariga kirish uchun sizga nima uchun ruxsat kerakligi aniq bo'lmasa, ular ilovangizga past baho berishlari yoki uni o'rnatishdan bosh tortishlari mumkin.
Foydalanuvchi profili
ContactsContract.ContactsStol asbobning foydalanuvchilar uchun profili ma'lumotlarini o'z ichiga olgan bir qator bor. Bu maʼlumotlar userfoydalanuvchi kontaktlaridan birini emas, balki qurilmani tavsiflaydi . Profil kontaktlari qatori profildan foydalanadigan har bir tizim uchun xom kontaktlar qatoriga ulanadi. Har bir profilning xom aloqa qatorida bir nechta ma'lumotlar qatorlari bo'lishi mumkin. Foydalanuvchi profiliga kirish uchun konstantalar ContactsContract.Profilesinfda mavjud.
Foydalanuvchi profiliga kirish maxsus ruxsatlarni talab qiladi. Oʻqish va yozish uchun zarur boʻlgan READ_CONTACTSva WRITE_CONTACTSruxsatlardan tashqari , foydalanuvchi profiliga kirish uchun mos ravishda android.Manifest.permission#READ_PROFILE va oʻqish va yozish uchun android.Manifest.permission#WRITE_PROFILE ruxsatnomalari talab qilinadi.
Esda tutingki, siz foydalanuvchi profilini sezgir deb hisoblashingiz kerak. Android.Manifest.permission#READ_PROFILE ruxsati qurilma foydalanuvchisining shaxsiy maʼlumotlariga kirish imkonini beradi. Ilovangiz tavsifida foydalanuvchiga nima uchun foydalanuvchi profiliga kirish ruxsati kerakligini ayting.
Foydalanuvchi profilini o'z ichiga olgan kontakt qatorini olish uchun ga qo'ng'iroq qiling ContentResolver.query(). Kontent URI ni sozlang CONTENT_URIva hech qanday tanlash mezonini ko'rsatmang. Bundan tashqari, ushbu kontent URI dan profil uchun xom kontaktlar yoki maʼlumotlarni olish uchun asosiy URI sifatida foydalanishingiz mumkin. Masalan, ushbu parcha profil uchun ma'lumotlarni oladi:
KotlinJava
// Sets the columns to retrieve for the user profile
projection = arrayOf(
ContactsContract.Profile._ID,
ContactsContract.Profile.DISPLAY_NAME_PRIMARY,
ContactsContract.Profile.LOOKUP_KEY,
ContactsContract.Profile.PHOTO_THUMBNAIL_URI
)

// Retrieves the profile from the Contacts Provider


profileCursor = contentResolver.query(
ContactsContract.Profile.CONTENT_URI,
projection,
null,
null,
null
)


Eslatma: Agar siz bir nechta kontakt qatorlarini olsangiz va ulardan biri foydalanuvchi profili ekanligini aniqlamoqchi boʻlsangiz, qator IS_USER_PROFILEustunini sinab koʻring . Agar kontakt foydalanuvchi profili bo'lsa, bu ustun "1" ga o'rnatiladi.
Download 27,79 Mb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish