android102 查询,插入联系人
2015-11-17 21:20
411 查看
package com.itheima.getcontacts; import com.itheima.getcontacts.domain.Contact; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { /* #联系人数据库 * raw\_contacts表: * contact_id:联系人id * data表:联系人的具体信息,一个信息占一行 * data1:信息的具体内容 * raw\_contact_id:联系人id,描述信息属于哪个联系人 * mimetype_id:描述信息是属于什么类型 * mimetypes表:通过mimetype_id到该表查看具体类型 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //查询联系人 public void click(View v){ //通过内容提供者访问联系人数据库 ContentResolver cr = getContentResolver(); //先查询raw\_contacts表拿到联系人id,com.android.contacts是联系人的内容提供者主机名,new String[]{"contact_id"}是查询的字段id, Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null, null, null); while(cursorContactId.moveToNext()){ //获取联系人id String contactId = cursorContactId.getString(0); //* 然后拿着联系人id去data表查询属于该联系人的信息,new String[]{"data1", "mimetype"}是查询的字段,new String[]{contactId}是查询条件 Cursor cursorData = cr.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1", "mimetype"}, "raw_contact_id = ?", new String[]{contactId}, null); //获取所有字段的名字 String[] names = cursorData.getColumnNames(); for (String string : names) { System.out.println(string); } Contact con = new Contact();//Contact自定义的联系人javabean //* 得到data1字段的值,就是联系人的信息,通过mimetype判断是什么类型的信息 while(cursorData.moveToNext()){ String data1 = cursorData.getString(0); String mimetype = cursorData.getString(1); //通过mimetype的判断,把data1存入对应的属性 if("vnd.android.cursor.item/email_v2".equals(mimetype)){ con.setEmail(data1); } else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){ con.setPhone(data1); } else if("vnd.android.cursor.item/name".equals(mimetype)){ con.setName(data1); } } System.out.println(con.toString()); } } } //<uses-permission android:name="android.permission.READ_CONTACTS"/>
package com.itheima.insertcontact; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //插入联系人 public void click(View v){ ContentResolver cr = getContentResolver(); //先查询raw_contacts表,获取最新联系人的主键,然后主键+1,就是要插入的联系人的id Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"_id"}, null, null, null); //默认联系人id就是1 int contact_id = 1; if(cursorContactId.moveToLast()){ //拿到主键 int _id = cursorContactId.getInt(0); //主键+1,就是要插入的联系人id contact_id = ++_id; } ContentValues values = new ContentValues(); values.put("contact_id", contact_id); //把联系人id插入raw_contacts数据库 cr.insert(Uri.parse("content://com.android.contacts/raw_contacts"), values); values.clear(); values.put("data1", "二bi"); values.put("mimetype", "vnd.android.cursor.item/name"); values.put("raw_contact_id", contact_id); cr.insert(Uri.parse("content://com.android.contacts/data"), values); values.clear(); values.put("data1", "1344567"); values.put("mimetype", "vnd.android.cursor.item/phone_v2"); values.put("raw_contact_id", contact_id); cr.insert(Uri.parse("content://com.android.contacts/data"), values); } } //<uses-permission android:name="android.permission.WRITE_CONTACTS"/> //<uses-permission android:name="android.permission.READ_CONTACTS"/>
相关文章推荐
- android的List布局的简单记发
- Android View MeasureSpec详解
- Android SystemProperties设置/取得系统属性的用法总结
- android Activity的生命周期
- Android Service的生命周期
- Android设计模式------尽量维持类的单一职责
- Android 框架:快速开发中Util常用工具类总结
- Android进程学习
- Android学习之LBS
- Android之简易音乐播发器
- com.android.dex.DexIndexOverflowException: Cannot merge new index 66299 into a non-jumbo instruction
- listview回滚到顶部
- Android中Bitmap,byte[],Drawable相互转化
- Android之获取屏幕和视图高和宽
- android studio初次启动时报java.lang.RuntimeException: java.lang.IllegalArgumentException的错误
- Android中Bitmap图片压缩
- Android自定义携带Cookie的POST请求
- Android中DisplayMetrics 获取手机屏幕分辨率
- 《第一行代码--Android》读书笔记之日志工具Log与Activity
- Android基础入门教程——8.4.3 Android动画合集之属性动画-初见