Content Provider 使用入门
来源:互联网 发布:洛杉矶快船知乎 编辑:程序博客网 时间:2024/06/04 18:20
第二十讲:Content Provider 使用入门
06Aug
本讲内容:Content Provider的使用。
1、Content Provider 简介
2、使用现成的Content Provider
3、定义自己的Content Provider
一、Content Provider 简介
我们说Android应用程序的四个核心组件是:Activity、Service、Broadcast Receiver 和 Content Provider。在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中。Content Provider 提供了程序之间共享数据的方法,一个程序可以使用Content Provider 定义一个URI,提供统一的操作接口,其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。
二、使用现成的Content Provider
我们举一个读取Android系统通讯录提供的Content Provider为例,说明如何使用现成的Content Provider。
1、新建一个项目 Lesson20_ContentProvider项目。
2、res/layout/main.xml内容省略,就是制作一个查询按钮。
3、MainContentProvider.java的内容如下:
01
package
android.basic.lesson20;
02
03
import
android.app.Activity;
04
import
android.content.ContentResolver;
05
import
android.content.ContentValues;
06
import
android.database.Cursor;
07
import
android.net.Uri;
08
import
android.os.Bundle;
09
import
android.provider.ContactsContract;
10
import
android.view.View;
11
import
android.view.View.OnClickListener;
12
import
android.widget.Button;
13
import
android.widget.Toast;
14
15
public
class
MainContentProvider
extends
Activity {
16
17
/** Called when the activity is first created. */
18
@Override
19
public
void
onCreate(Bundle savedInstanceState) {
20
super
.onCreate(savedInstanceState);
21
setContentView(R.layout.main);
22
23
Button b1 = (Button) findViewById(R.id.Button01);
24
25
OnClickListener ocl =
new
OnClickListener() {
26
27
@Override
28
public
void
onClick(View v) {
29
ContentResolver contentResolver = getContentResolver();
30
// 获得所有的联系人
31
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,
null
,
null
,
null
,
null
);
32
// 循环遍历
33
if
(cursor.moveToFirst()) {
34
35
int
idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
36
37
int
displayNameColumn = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
38
39
do
{
40
// 获得联系人的ID号
41
String contactId = cursor.getString(idColumn);
42
43
// 获得联系人姓名
44
String disPlayName = cursor.getString(displayNameColumn);
45
46
Toast.makeText(MainContentProvider.
this
,
"联系人姓名:"
+disPlayName,
47
Toast.LENGTH_LONG).show();
48
49
// 查看该联系人有多少个电话号码。如果没有这返回值为0
50
int
phoneCount = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
51
52
if
(phoneCount >
0
) {
53
54
// 获得联系人的电话号码列表
55
Cursor phonesCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null
,
56
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
57
+
" = "
+ contactId,
null
,
null
);
58
59
if
(phonesCursor.moveToFirst()) {
60
do
{
61
// 遍历所有的电话号码
62
String phoneNumber = phonesCursor
63
.getString(phonesCursor
64
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
65
Toast.makeText(MainContentProvider.
this
,
"联系人电话:"
+phoneNumber,
66
Toast.LENGTH_LONG).show();
67
}
while
(phonesCursor.moveToNext());
68
}
69
}
70
71
}
while
(cursor.moveToNext());
72
}
73
}
74
};
75
76
b1.setOnClickListener(ocl);
77
}
78
79
}
4、运行程序,查看结果
系统通讯录中的联系人信息
我们的程序读取出来的联系人信息
- Content Provider 使用入门
- 第二十讲:Content Provider 使用入门
- Content Provider 使用教程
- content provider 的使用
- android content provider 使用
- Content Provider使用
- 使用Content Provider
- content provider的使用!
- Content Provider 使用
- Android Content Provider使用
- Android Content Provider使用
- 总结Content Provider的使用
- Android下Content Provider使用
- 总结Content Provider的使用
- 总结Content Provider的使用
- 总结Content Provider的使用
- 总结Content Provider的使用
- android Content Provider的使用
- 系统调用与库函数
- c_str
- 算法学习【8】——1083. Networking
- 颜色特征提取方法
- [NOIP2001]数的划分
- Content Provider 使用入门
- hdu 1850 Being a Good Boy in Spring Festival (博弈)
- mt.exe : general error c101008d 解决方法
- 第一次遇到fatal error C1076,原来是栈太小
- EtherChannel
- CGAL中数值求解示例—OpenNL
- 从平凡到不平凡(转)
- CGAL与Taucs库求解线程方程组示例
- SQLite数据库增删改查操作