Android ContentResolver 是一個用于查詢和操作應用程序數據的接口。以下是一些建議和技巧,可以幫助您更有效地使用 ContentResolver:
使用 Content Resolver 查詢數據:
query()
方法查詢數據。傳入一個 URI、一個投影(表示要返回的列)、一個選擇條件(用于過濾結果)和一個可選的排序順序。Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.Phone_NUMBERS};
String selection = "((" + ContactsContract.Contacts.DISPLAY_NAME + " LIKE ?) AND (" + ContactsContract.Contacts.Phone_NUMBERS + " LIKE ?))";
String[] selectionArgs = {"%John%", "%123%"};
Cursor cursor = getContentResolver().query(contactsUri, projection, selection, selectionArgs, null);
插入數據:
insert()
方法插入數據。傳入一個 URI 和要插入的數據(以 ContentValues 對象的形式)。Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
ContentValues contentValues = new ContentValues();
contentValues.put(ContactsContract.Contacts.DISPLAY_NAME, "John Doe");
contentValues.put(ContactsContract.Contacts.Phone_NUMBERS, "123-456-7890");
Uri newContactUri = getContentResolver().insert(contactsUri, contentValues);
更新數據:
update()
方法更新數據。傳入一個 URI、要更新的數據(以 ContentValues 對象的形式)和一個選擇條件。Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
String selection = ContactsContract.Contacts._ID + "=?";
String[] selectionArgs = {"1"};
ContentValues contentValues = new ContentValues();
contentValues.put(ContactsContract.Contacts.Phone_NUMBERS, "098-765-4321");
getContentResolver().update(contactsUri, contentValues, selection, selectionArgs);
刪除數據:
delete()
方法刪除數據。傳入一個 URI 和一個選擇條件。Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
String selection = ContactsContract.Contacts.DISPLAY_NAME + "=?";
String[] selectionArgs = {"John Doe"};
getContentResolver().delete(contactsUri, selection, selectionArgs);
使用 Content Resolver 監聽數據變化:
ContentObserver
接口并重寫 onChange()
方法。然后,使用 getContentResolver().registerContentObserver()
方法注冊 ContentObserver。Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
getContentResolver().registerContentObserver(contactsUri, true, new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
// 處理聯系人添加或刪除操作
}
});
使用 Content Resolver 訪問其他應用程序的數據:
Uri imagesUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME};
Cursor cursor = getContentResolver().query(imagesUri, projection, null, null, null);
了解這些建議和技巧后,您可以更有效地使用 Android ContentResolver 來查詢、插入、更新和刪除應用程序數據。