Android -- ContentProvider与联系人
2014-06-23 08:35
190 查看
数据库
读联系人
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表里面添加对应的数据。
读取
写入
注意
当联系人被删除之后,其实联系人还是存在在数据库里面的,但是只是”contact_id”为null了,所以为了不取出用户已经删除的联系人,读取到的”contact_id”需要判断一下是否为null。
我是天王盖地虎的分割线
源代码:http://pan.baidu.com/s/1dD1Qx01
读取联系人.zip
转载请注明出处:http://www.cnblogs.com/yydcdut
读联系人
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
相关文章推荐
- Android中ContentProvider组件详解 .(查找sd卡上的歌曲和联系人)
- 第67章、使用ContentProvider操作联系人(从零开始学Android)
- Android-数据存储(Content Provider ,调用系统 联系人 ContentProvider实现查询和增加联系人)
- Android 开发 ContentProvider 获取歌曲列表和联系人的例子
- android中ContentProvider实现联系人的读取和插入
- android 数据库 SQLiteOpenHelper和ContentProvider学习笔记---添加修改删除数据之联系人(二)
- android-ContentProvider获取联系人信息
- android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人
- Android ContentProvider之联系人数据库及操作
- Android-ContentProvider读取和插入手机联系人
- Android数据存储之ContentProvider调用联系人数据
- Android -- ContentProvider, 读取和保存系统 联系人
- Android -- ContentProvider, 读取和保存系统 联系人
- Android核心基础-5.Android 数据存储与访问-4.ContentProvider 内容提供者-示例(操作联系人)
- Android--操作联系人的ContentProvider
- Android 使用ContentProvider 添加联系人
- android 联系人操作: ContentProvider往通讯录添加联系人和获取联系人
- Android学习之手机联系人的查询与添加(ContentProvider知识板块)
- Android(java)学习笔记250:ContentProvider使用之获得系统联系人信息02(掌握)
- android基础总结篇之六:ContentProvider之读写联系人