Middle
Mis on Content Provider ja kuidas seda Androidis kasutatakse?
sobes.tech AI
Vastus AI-lt
Satura nodrošinātājs — tas ir viens no Android būvblokiem (lietojumprogrammas komponenta), kas nodrošina standartizētu saskarni strukturētu datu piekļuvei un pārvaldībai. Tas darbojas kā starpnieks starp lietojumprogrammu un datu avotu (piemēram, SQLite datu bāzi, failiem, tīkla datiem).
Tiek izmantots šādiem mērķiem:
- Datu koplietošana: ļauj dažādām lietojumprogrammām droši piekļūt vieniem un tiem pašiem datiem, nepiekļūstot tieši pamatdatu avotam.
- Atļauju pārvaldība: ļauj kontrolēt, kuras lietojumprogrammas piekļūst datiem un kādas operācijas (lasīšana, rakstīšana, atjaunināšana, dzēšana) tās var veikt.
- Datu avota abstrakcija: slēpj datu avota īstenošanas detaļas klientiem, vienkāršojot piekļuvi datiem.
- Integrācija ar Android ietvaru: izmanto tādas sastāvdaļas kā
CursorLoaderasinkronai datu ielādei UI unSyncAdapterdatu sinhronizācijai.
Galvenās Content Provider metodes:
// Veic pieprasījumu uz sniedzēju un atgriež Cursor
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
// Ievieto jaunu ierakstu sniedzējā un atgriež jauna ieraksta URI
public Uri insert(Uri uri, ContentValues values);
// Atjaunina esošos ierakstus sniedzējā un atgriež atjaunināto rindu skaitu
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs);
// Dzēš ierakstus no sniedzēja un atgriež dzēsto rindu skaitu
public int delete(Uri uri, String selection, String[] selectionArgs);
// Atgriež MIME tipu datiem, kas saistīti ar šo URI
public String getType(Uri uri);
// Inicializē sniedzēju tā izveides laikā
public boolean onCreate();
URI, lai piekļūtu Content Provider, ir šāda formāta:
content:// authority / path segment / id
kur:
content://— standarta shēma Content Providers.authority— unikāla virkne, kas identificē Content Provider (parasti lietojumprogrammas pakotnes nosaukums vai tā daļa).path segment— izvēles daļa, kas norāda uz konkrētu tabulu vai datu kopu.id— izvēles daļa, kas norāda uz konkrētu ierakstu datu kopā.
Piemērs, kā izmantot ContentResolver, lai sazinātos ar Content Provider:
// Saņem ContentResolver instance
ContentResolver resolver = getContentResolver();
// URI datu piekļuvei
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// Veic pieprasījumu
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
// Apstrādā rezultātu
if (cursor != null && cursor.moveToFirst()) {
// ... datu lasīšana no kursora ...
cursor.close(); // Vienmēr aizveriet kursora!
}
Content Provider tiek reģistrēts AndroidManifest.xml failā:
<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" />