Kod
| | |
Kontent nomi
| | |
tarkib: //ru.alexanderklimov.provider.notepad/notes
|
100
|
Izohlar
|
tarkib: //ru.alexanderklimov.provider.notepad/notes/#
|
101
|
NOTES_ID
|
Kodda , kalit yordamida filial yaratiladi - biz butun jadval haqida ma'lumot olishni xohlaymizmi (kod 100) yoki ma'lum bir qatorga (kod 101).
Ilova murakkab bo'lishi va bir nechta jadvalga ega bo'lishi mumkin. Keyin yana doimiylar bo'ladi. Masalan, shunga o'xshash.
URI namunasi
|
Kod
|
Kontent nomi
|
tarkib: //com.android.contacts/contacts
|
1000
|
ALOQALAR
|
tarkib: //com.android.contacts/contacts/#
|
1001
|
CONTACTS_ID
|
tarkib: //com.android.contacts/lookup/*
|
1002
|
CONTACTS_LOOKUP
|
tarkib: //com.android.contacts/lookup/*/#
|
1003
|
CONTACTS_LOOKUP_ID
|
...
|
...
|
...
|
tarkib: //com.android.contacts/data
|
3000
|
MA'LUMOT
|
tarkib: //com.android.contacts/data/#
|
3001
|
DATA_ID
|
...
|
...
|
...
|
Pound belgisi (#) raqamni, yulduzcha (*) qatorni ifodalaydi.
6.So'rov () usuli Insert () usuli. So'rov () usuli
Query () usuli ContentProvider klassi uchun talab qilinadi . Agar biz ma'lumotlar bazasiga kirish uchun kontent-provayderdan foydalansak, unda SQLiteDatabase- ning bir xil nomdagi usuli chaqiriladi . Usulning tarkibi deyarli bir xil.
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
...
cursor = database.query(GuestEntry.TABLE_NAME, projection, selection, selectionArgs,
null, null, sortOrder);
...
}
Tez maslahat:
URI: content://com.example.android.cathouse/cats/3
Projection: {"_id", "name"}
Selection: "_id=?"
Selection Args: {"3"}
SQL bayonotiga mos keladi.
SELECT id, name FROM cats WHERE _id=3
Siz metod argumentlari uchun kerakli ma'lumotlarni dasturiy ravishda olishingiz kerak. Tanlov arglari uchun manzilning oxirgi qismini, bizning holatimizda 3 raqamini qaytaradigan ContentUris.parseId (uri) uslubiga e'tibor bering .
Insert () usuli
Insert () usuli ikkita parametrni o'z ichiga oladi - URI va ContenValues . Birinchi parametr, xuddi shu tarzda ishlaydi () usuli kabi . Ikkinchisi jadvalning kerakli ustunlariga ma'lumotlarni kiritadi.
Qo'shish uchun insertGuest () yordamchi usuli qo'llaniladi .
7.Android-da MIME turlarini tuzish.
Xuddi veb-sayt berilgan ko'prik uchun MIME turini qaytarganidek (bu brauzerda berilgan tarkib turini ko'rish uchun dasturni faollashtirishga imkon beradi), kontent-provayder berilgan URI uchun MIME turini qaytarish imkoniyatiga ega. Bu sizga ma'lumotlarni ko'rishda ma'lum darajada moslashuvchanlikni beradi. Agar biz qanday ma'lumot turini olishimizni bilsak, unda bunday ma'lumotlarni namoyish qilish uchun mo'ljallangan bitta yoki bir nechta dasturni tanlashimiz mumkin. Masalan, kompyuterning qattiq diskida matnli fayl bo'lsa, biz uni namoyish etishga qodir bo'lgan bir nechta muharrirlarni tanlashimiz mumkin.
MIME turlari Android-da HTTP-da bo'lgani kabi ishlaydi. Siz kontent-provayder tomonidan qo'llab-quvvatlanadigan ma'lum bir URI-ning MIME turini so'raysiz va kontent-provayder qabul qilingan standartlarga muvofiq MIME turini aniqlaydigan ikki qismli belgilar ketma-ketligini qaytaradi.
MIME belgisi ikki qismdan iborat: turi va pastki turi. Quyida ba'zi taniqli MIME tiplari va subtip juftliklariga misollar keltirilgan:
text / html
text / css
text / xml
image / jpeg
audio / mp3
video / mp4
application / pdf
application / msword
Asosiy ro'yxatdan o'tgan tarkib turlari:
dastur
audio
tasvirli
xabar
modeli
ko'p qismli
matnli
video
Android MIME turlarini aniqlash uchun shunga o'xshash printsipdan foydalanadi. Android MIME turlarida vnd belgisi bu turdagi va pastki turlarning nostandart, ishlab chiqaruvchiga xosligini anglatadi. Android-dagi o'ziga xoslikni ta'minlash uchun domen nomlari singari bir nechta komponentlardan foydalangan holda turlari va pastki turlari ajratiladi. Bundan tashqari, har bir tarkib turiga mos keladigan Android MIME turlari ikki shaklda bo'ladi: bitta post va ko'p postli.
MIME turlari Android-da, xususan intentsiyalar bilan ishlashda, tizim MIME ma'lumotlar turidan qaysi hodisani faollashtirish kerakligini aniqlaganda keng qo'llaniladi. MIME turlari har doim tegishli URI-lar asosida kontent-provayderlar tomonidan taqdim etiladi. MIME turlari bilan ishlashda uchta narsani yodda tutish kerak.
Turi va pastki turi ular ko'rsatadigan tarkib turi uchun o'ziga xos bo'lishi kerak. Bu odatda buyumlar katalogi yoki bitta element. Android kontekstida katalog va element o'rtasidagi farq bir qarashda ko'rinadigan darajada aniq bo'lmasligi mumkin.
Agar turi yoki pastki turi standart bo'lmasa, u oldindan vnd bilan qo'shilishi kerak (odatda yozuvlarning ma'lum turlari uchun).
Odatda turlar va pastki turlar sizning ehtiyojlaringizga qarab nomlanadi.
Ushbu nuqtani yana bir bor ta'kidlash kerak: Android-da kursor buyrug'i bilan qaytarilgan narsalar to'plamining asosiy MIME turi har doim vnd.android.cursor.dir , kursor buyrug'i tomonidan topilgan bitta element uchun asosiy MIME turi bo'lishi kerak . Android vnd. Android.cursor.item shaklida bo'lishi kerak . Agar biz kichik tip haqida gapiradigan bo'lsak, unda vnd.googl.note bilan bo'lgani kabi, manevr uchun joy kengayadi ; vnd komponentidan keyin . sizga mos keladigan har qanday kichik turni erkin tanlashingiz mumkin.
8.ContentResolver.
Ilovaga tegishli har qanday tarkib ob'ekti getContentResolver () usuli orqali olinadigan ContentResolver sinfining nusxasini o'z ichiga oladi .
ContentResolver contentResolver = getContentResolver();
ContentResolver faoliyatdan kontent-provayderga so'rovlar va operatsiyalarni amalga oshirish uchun ishlatiladi. ContentResolver , so'rovlar va bitimlar uchun ContentProvider- dagi kabi usullarni o'z ichiga oladi . ContentResolver har qanday talab faqat oladi - u bilan o'zaro hamkorlik kontent provayderi amalga oshirish haqida bilish kerak bo'lgan emas URI yo'lini ko'rsatadi, deb ContentProvider kirish uchun.
http://fayllar.org
|