Android本地的Content Provider

晨曦之光 发布于 2012/03/05 15:34
阅读 686
收藏 1

Android本地的Content Provider

   

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 来修改、删除或插入联系人记录。

 

原文摘自:http://www.cnblogs.com/xirihanlin/archive/2009/08/10/1542672.html


原文链接:http://blog.csdn.net/jinliang_890905/article/details/6406612
加载中
返回顶部
顶部