首页 技术 正文
技术 2022年11月15日
0 收藏 838 点赞 2,651 浏览 3299 个字

数据库                                                                                        

读联系人

  • raw_contacts表:保存联系人的id      contact_id保存联系人的id
  • data表:保存联系人的数据    data1存放数据    mimetype_id存放数据类型   raw_contact_id存放数据属于哪一个联系人的
  • mimetypes表:保存数据的类型  1 –> email  5 –>phone  7 –>name

流程:

1.查询raw_contact表,把所有的联系人的id取出来。

2.根据id查询data表,把这个id对应的所有的数据取出来。

3.根据数据的类型 查询mimetypes表获取数据业务的类型。

写联系人

1.在raw_contact表中添加一个id。

2.使用这个新添加的id在data表里面添加对应的数据。

读取                                                                                          

public class MainActivity extends Activity {    private Button btn_read;    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btn_read = (Button) findViewById(R.id.btn_read);
btn_read.setOnClickListener(new buttonLisnter());
} class buttonLisnter implements OnClickListener { @Override
public void onClick(View v) {
// 查询raw_contact表获取联系人ID
ContentResolver resolver = getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri datauri = Uri.parse("content://com.android.contacts/data"); Cursor cursor = resolver.query(uri, null, null, null, null);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor
.getColumnIndex("contact_id"));
System.out.println("id====" + id);
Cursor dataCursor = resolver.query(datauri, null,
"raw_contact_id=?", new String[] { id }, null);
while (dataCursor.moveToNext()) {
String data1 = dataCursor.getString(dataCursor
.getColumnIndex("data1"));
String mimetype = dataCursor.getString(dataCursor
.getColumnIndex("mimetype"));
System.out.println("data1=" + data1
+ "--------------mimetype=" + mimetype);
}
dataCursor.close();
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
}
cursor.close();
} }}

写入                                                                                          

case R.id.btn_write:
// 向raw_contact表里调价联系人的id
ContentResolver reslo = getContentResolver();
// 获取raw_contact对应的uri
Uri uri1 = Uri
.parse("content://com.android.contacts/raw_contacts");
Uri datauri1 = Uri.parse("content://com.android.contacts/data");
ContentValues values = new ContentValues();
Cursor cursor1 = reslo.query(uri1, new String[] { "_id" },
null, null, null);
cursor1.moveToNext();
int lastId = cursor1.getInt(0);
int newId = lastId + 1;
values.put("_id", newId);
reslo.insert(uri1, values);
// 添加data1
ContentValues phoneValues = new ContentValues();
phoneValues.put("data1", "88888888888");
phoneValues.put("mimetype", "vnd.android.cursor.item/phone_v2");
phoneValues.put("raw_contact_id", newId);
reslo.insert(datauri1, phoneValues); ContentValues emailValues = new ContentValues();
emailValues.put("data1", "admin@yyd.com");
emailValues.put("mimetype", "vnd.android.cursor.item/email_v2");
emailValues.put("raw_contact_id", newId);
reslo.insert(datauri1, emailValues); ContentValues nameValues = new ContentValues();
nameValues.put("data1", "admin@yyd.com");
nameValues.put("mimetype", "vnd.android.cursor.item/name");
nameValues.put("raw_contact_id", newId);
reslo.insert(datauri1, nameValues); Toast.makeText(MainActivity.this, "插入OK", Toast.LENGTH_LONG)
.show(); break;

注意                                                                                           

当联系人被删除之后,其实联系人还是存在在数据库里面的,但是只是”contact_id”为null了,所以为了不取出用户已经删除的联系人,读取到的”contact_id”需要判断一下是否为null。

我是天王盖地虎的分割线                                                                 

源代码:http://pan.baidu.com/s/1dD1Qx01

读取联系人.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903