編輯:Android開發教程
QuickContactsDemo示例介紹了如果使用Content Provider來訪問Android系統的Contacts 數據庫。
Content Provider為不同應用之間共享數據提供了統一的接口,通過對底層數據源的抽象,Content Provider實現了應用程序代碼和數 據層分離。Android平台對大部分的系統數據庫都提供了對應的Content Provider接口:
Browser: 讀取和修改Bookmark,Browser history或Web Searches。
CallLog: 查看或是更新Call History(打入電話或是打出電話,未接電話等)
Contacts: 檢索,修改或存儲通訊錄。
MediaStore: 訪問媒體庫(包括聲音,視頻,圖像等)。
Settings: 訪問系統設置,查看或是修改藍牙設置,鈴聲設置等。
Android系統的每個Content Provider都定義了一個CONTENT_URI,功能類似於數據庫的名稱。Android中每個Context對象( 如Activity)對含有一個ContentResolver,ContentResolver可以根據CONTENT_URI獲取對應的Content Provider:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND (" + Contacts.HAS_PHONE_NUMBER + "=1) AND (" + Contacts.DISPLAY_NAME + " != '' ))"; Cursor c = getContentResolver().query(Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); startManagingCursor(c); ContactListItemAdapter adapter = new ContactListItemAdapter(this, R.layout.quick_contacts, c); setListAdapter(adapter); }
getContentResolver() 取的ContentResolver對象,它的Query方法定義如下:
public final Cursorquery (Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder)
Uri: 需要訪問的Content Provider對應的URI,如通訊錄的URI為Contacts.CONTENT_URI。
Projection: 需要返回的表的列名,如為NULL,則返回表的全部列。
Selection: 查詢數據表的條件,相當於SQL 的Where語句。
selectionArgs: 相當於SQL查詢條件的查詢參數?
sortOrder: 相當於SQL查詢的Order語句,查詢排序,為空時,返回記錄的缺省順序。
可以看得出,Content Provider和 數據庫的用法非常類似。query返回的對象為Cusor ,有Cursor對象後就可以和訪問數據 庫表一樣來insert ,delete ,update 數據庫。
startManagingCursor(c); 讓Activity來管理cursor 的生命周期。
此外訪問Content Provider還需要合適的權限才能正確訪問,比如讀寫通訊錄,需要在AndroidManifest.xml設置:
<uses-permission android:name=”android.permission.READ_CONTACTS” />
<uses-permission android:name=”android.permission.WRITE_CONTACTS” />
才能有權限訪問通信錄。
注:如果在模擬器上 運行這個示例,需要在Contacts添加幾個Contacts,否則這個例子沒有顯示。
Preview data Preview callbackAndroid Camera小系統:嗯……直接看Camera HAL層,它實現是主
1.1.1 應用程序的典型繪圖流程我們知道,BufferQueue有最多達32個BufferSlot,這樣設計的目的是什麼?一個可能的原因就是提高圖形渲染速度。因為假如只
Remote Service Controller 和使用Local Service的Android ApiDemo示例解析(40):App->Service-&g
變態問題常有,今年特別多,,, - - # 今天遇到的這個非處理不可,不然沒法在HTC One S使用SearchView,其軟鍵盤不支持action設置。問題設備:HT