Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android ApiDemos示例解析(10) App->Activity->QuickContactsDemo

Android ApiDemos示例解析(10) App->Activity->QuickContactsDemo

編輯: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,否則這個例子沒有顯示。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved