Middle
Content Provider რა არის და როგორ გამოიყენება Android-ში?
sobes.tech AI
პასუხი AI-სგან
Content Provider — бул Android түзүмүнүн бир бөлүгү (Application Component), ал структураланган маалыматтарга стандартташтырылган интерфейс аркылуу кирүүгө жана башкарууга мүмкүндүк берет. Ал колдонмо менен маалымат булагынын ортосунда делдал болуп иштейт (мисалы, SQLite маалымат базасы, файлдар, тармактык маалыматтар).
Колдонуу үчүн:
- Маалыматка жалпы кирүү: Бул ар кандай колдонмолорго бирдей маалыматка коопсуз кирүүгө мүмкүндүк берет, түздөн-түз маалымат булагына кирбестен.
- Рухсаттарды башкаруу: Кайсы колдонмолор маалыматка кире алат жана кандай операцияларды (окуу, жазуу, жаңылоо, өчүрүү) аткара алат деген көзөмөлдү камсыздайт.
- Маалымат булагынын абстракциясы: Кардарлардан маалымат булагынын ишке ашырылышынын деталдарын жашырып, маалыматка жетүүнү жөнөкөйлөтөт.
- Android Framework менен интеграция:
CursorLoaderжанаSyncAdapterсыяктуу компоненттер аркылуу колдонулат, ал эми асинхрондуу маалымат жүктөө жана синхрондоо үчүн.
Content Provider негизги ыкмалары:
// Провайдерге суроо жиберип, Cursor кайтарат
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
// Жаңы жазбаны провайдерге кошуп, жаңы жазбанын URI-үн кайтарат
public Uri insert(Uri uri, ContentValues values);
// Бар болгон жазбаларды жаңыртып, жаңыртылган саптардын санын кайтарат
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
// Жазбаларды провайдерден өчүрүп, өчүрүлгөн саптардын санын кайтарат
public int delete(Uri uri, String selection, String[] selectionArgs);
// Бул URI үчүн MIME-типти кайтарат
public String getType(Uri uri);
// Провайдер түзүлгөндө башталат
public boolean onCreate();
Content Providerге кирүү үчүн URI төмөнкү форматта болот:
content://authority/path segment/id
мында:
content://— стандарт схемасы Content Providers үчүнauthority— Content Providerди уникалдуу аныктоочу сап (көп учурда колдонмонун пакети аты же анын бөлүгү)path segment— так таблицага же маалымат топтомуна көрсөтүүчү милдеттүү эмес бөлүкid— так маалымат топтомундагы жазууга көрсөтүүчү милдеттүү эмес бөлүк
Мисал колдонуу ContentResolver менен:
// ContentResolver объектисин алуу
ContentResolver resolver = getContentResolver();
// Маалыматка жетүү үчүн URI (мисалы, системдик контакти провайдери)
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// Суроо жүргүзүү
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
// Натыйжаны иштетүү (курсор аркылуу)
if (cursor != null && cursor.moveToFirst()) {
// ... маалыматты окуу
cursor.close(); // Ар дайым курсорду жабуу!
}
Content Provider катталат AndroidManifest.xml файлында:
<provider
android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="true"
android:readPermission="com.example.myapp.permission.READ_DATA"
android:writePermission="com.example.myapp.permission.WRITE_DATA" />