Android本地的Content Provider

來源:互聯網
上載者:User
   

Android暴露了許多Content Provider來訪問本地的資料庫。

 

你可以使用之前描述的技巧來使用本地的Content Provider。可變通的地方,android.provider類包含了一些便利的類來簡化這些有用的Provider,包括:

 

❑ Browser

使用Browser Content Provider可以用來讀取或修改標籤、瀏覽曆史或者網路搜尋。

 

❑ CallLog

查看或更新電話曆史,包括來電和去電、未接來電和電話細節,如連絡人和通話時間。

 

❑ Contacts

使用Contacts Provider可以用來讀取、修改或保持連絡人資訊。

 

❑ MediaStore

MediaStore提供了對裝置上的多媒體檔案的集中控制,包括音頻、視頻和圖片。你可以在MediaStore中儲存你自己的多媒體來讓它可以全域訪問。

 

❑ Settings

你可以使用Settings Provider來訪問裝置的Preference。使用它,你可以查看和修改藍芽設定、鈴聲和其它裝置設定。

 

 

你應該儘可能地使用這些本地的Content Provider,來保證你的程式和本地或第三方程式之前無瑕疵的整合到一起。

 

介紹如何使用這些輔助類不在本章的範圍,接下來的章節描述了如何使用其中的一些有用的、強大的本地Content Provider。

 

使用MediaStore Provider

 

Android的MediaStore提供了音頻、視頻和圖片檔案的管理倉庫。當你添加一個新的多媒體檔案到Android的檔案系統時,你應該把它也添加到MediaStore中,來保證它能被其它的程式可見。

 

MediaStore類中包含了一些方便地方法來簡化檔案的插入。例如。接下來的程式碼片段顯示了如何直接將一個檔案插入到MediaStore中:

 

android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),

sourceBitmap,“my_cat_pic”,“Photo of my cat!”);

 

使用Contacts Provider

 

在通訊裝置上,對連絡人管理器的訪問是尤其重要的。Android在這點上,作出了正確的事情:對於授予了READ_CONTACTS許可權的任何應用程式,都可以訪問連絡人資料庫中的所有資訊。

 

在接下來的例子,Activity擷取連絡人資料庫中每個人的Cursor,建立一個字串數組來儲存每個連絡人的名字和電話號碼。

 

為了簡化從Cursor上提取資料,Android提供了一些People類的靜態屬性來表示列名稱。

 

// Get a cursor over every contact.

Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);

 

// Let the activity manage the cursor lifecycle.

startManagingCursor(cursor);

 

// Use the convenience properties to get the index of the columns

int nameIdx = cursor.getColumnIndexOrThrow(People.NAME);

int phoneIdx = cursor. getColumnIndexOrThrow(People.NUMBER);

String[] result = new String[cursor.getCount()];

if (cursor.moveToFirst())

do {

// Extract the name.

String name = cursor.getString(nameIdx);

 

// Extract the phone number.

String phone = cursor.getString(phoneIdx);

 

result[cursor.getPosition()] = name + “ (“ + phone + “)”;

} while(cursor.moveToNext());

 

為了運行這個程式碼片段,你需要給程式添加READ_CONTACTS許可權。

 

和查詢連絡人資料庫一樣,你還可以使用這個Content Provider來修改、刪除或插入連絡人記錄。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.