編輯: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:
Java代碼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,否則這個例子沒有顯示。
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
SlidingDrawer隱藏屏外的內容,並允許用戶通過handle以顯示隱藏內容。它可以垂直或水平滑動,它有倆個View組成,其一是可以拖動的handle,其二
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩