close
課程進行到這邊,就發現JAVA是整個APP開發的基石,如果裝備要升級,下個階段恐怕還是得去補強才行。不然光在 [], {}, (), =, ?, .............搞來搞去,真的就要再見了。頗有相見恨晚之感啊!! 我真的對大學的計概老師很抱歉,不應該每次都抄別人的作業啊! 有一次要交開發網站的作業,我竟然無恥到拿奇摩免費網頁去交作業。(而且我還過了)  早知道以前就好好學了。

整個Andriod開發一層一層的邏輯好像一個社會一樣在運作,你要拿資料,去找管理員要,你要顯示資料,去找顯示資料工具ADAPTER,你要查資料,先去找查找器CURSOR,一個一個介面對話,有各自歸屬的工具,這當初設計的人,對於虛擬世界的規劃,真令人佩服。

手機裡有各式各樣的資料,Android把資料分幾部分Content Provider:
1. Contacts聯絡人資料,包括name, phoner number, email, ......
2. Calendar行事曆
3. MediaStore照片, 影片等等的

為了防止每個app直接去讀取raw data,要取資料的時候要透過一層Contract去取資料,他就像是圖書館管理員一樣的概念,對照上面三種provider分別是:
1. ContactsContract
2. CalendarContract
3. MediaStore.Image

要把contract叫出來,需要用ContentResolver把圖書館管理員叫出來,然後才可以跟他說我們要找什麼資料,他會去幫我們query。當然啦,query之後得到cursor,要用adapter來插入想插入的畫面中,這個過去Android開發者cosplay之cursor/adapter初探已經談過了。

至於說,資料去哪邊拿,關於圖書館裡資料分類的規則,以Contacts聯絡人為例,包含許多的子項目,包括name, phone number, email...等等的,每個資料都有自己歸屬的書櫃,書櫃的編號叫做是URI (Uniform Resource Identifier),理解至此,就可以來要資料了。

Cursor c = getContentResolver()  把ContentResolver呼叫出來.query 查詢的動作(ContactsContract. 去找Contacts的管理員拿資料Contacts. 去Contacts的項目裡拿CONTENT_URI, Contacts的表格名稱null, null, null, null);  需要查詢資料的欄位數、條件
拿到URI之後,就可以去查詢欄位裡的資料,比如說ID, Name之類,也不需要去記欄位編號,因為用Contacts.xxx就可以把欄位裡資料查出來。
查到資料(Cursor c),再來就要放到(Adapter)畫面表格ListView上去,把from的資料放到to上去。
String[] from = { Contacts._ID, Contacts.DISPLAY_NAME};
int[] to = {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, c, from, to);
setListAdapter(adapter);
實際上應用

模擬器結果

這樣就可以取得電話簿裡的資料了。所以照理說,每一個app寫這些程式碼,存到資料庫,每個人的電話簿資料,不就被app開發商拿光光,相當沒隱私啊!

arrow
arrow
    全站熱搜

    brianc18 發表在 痞客邦 留言(0) 人氣()