1. package com.itheima.getcontacts;
  2.  
  3. import com.itheima.getcontacts.domain.Contact;
  4.  
  5. import android.net.Uri;
  6. import android.os.Bundle;
  7. import android.app.Activity;
  8. import android.content.ContentResolver;
  9. import android.database.Cursor;
  10. import android.view.Menu;
  11. import android.view.View;
  12.  
  13. public class MainActivity extends Activity {
  14. /*
  15. #联系人数据库
  16.  
  17. * raw\_contacts表:
  18. * contact_id:联系人id
  19. * data表:联系人的具体信息,一个信息占一行
  20. * data1:信息的具体内容
  21. * raw\_contact_id:联系人id,描述信息属于哪个联系人
  22. * mimetype_id:描述信息是属于什么类型
  23. * mimetypes表:通过mimetype_id到该表查看具体类型
  24.  
  25. */
  26.  
  27. @Override
  28. protected void onCreate(Bundle savedInstanceState) {
  29. super.onCreate(savedInstanceState);
  30. setContentView(R.layout.activity_main);
  31. }
  32.  
  33. //查询联系人
  34. public void click(View v){
  35. //通过内容提供者访问联系人数据库
  36. ContentResolver cr = getContentResolver();
  37. //先查询raw\_contacts表拿到联系人id,com.android.contacts是联系人的内容提供者主机名,new String[]{"contact_id"}是查询的字段id,
  38. Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null, null, null);
  39. while(cursorContactId.moveToNext()){
  40. //获取联系人id
  41. String contactId = cursorContactId.getString(0);
  42. //* 然后拿着联系人id去data表查询属于该联系人的信息,new String[]{"data1", "mimetype"}是查询的字段,new String[]{contactId}是查询条件
  43. Cursor cursorData = cr.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1", "mimetype"},
  44. "raw_contact_id = ?", new String[]{contactId}, null);
  45. //获取所有字段的名字
  46. String[] names = cursorData.getColumnNames();
  47. for (String string : names) {
  48. System.out.println(string);
  49. }
  50. Contact con = new Contact();//Contact自定义的联系人javabean
  51. //* 得到data1字段的值,就是联系人的信息,通过mimetype判断是什么类型的信息
  52. while(cursorData.moveToNext()){
  53. String data1 = cursorData.getString(0);
  54. String mimetype = cursorData.getString(1);
  55. //通过mimetype的判断,把data1存入对应的属性
  56. if("vnd.android.cursor.item/email_v2".equals(mimetype)){
  57. con.setEmail(data1);
  58. }
  59. else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
  60. con.setPhone(data1);
  61. }
  62. else if("vnd.android.cursor.item/name".equals(mimetype)){
  63. con.setName(data1);
  64. }
  65. }
  66. System.out.println(con.toString());
  67. }
  68. }
  69.  
  70. }
  71. //<uses-permission android:name="android.permission.READ_CONTACTS"/>
  1. package com.itheima.insertcontact;
  2.  
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.app.Activity;
  6. import android.content.ContentResolver;
  7. import android.content.ContentValues;
  8. import android.database.Cursor;
  9. import android.view.Menu;
  10. import android.view.View;
  11.  
  12. public class MainActivity extends Activity {
  13.  
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. }
  19.  
  20. //插入联系人
  21. public void click(View v){
  22. ContentResolver cr = getContentResolver();
  23. //先查询raw_contacts表,获取最新联系人的主键,然后主键+1,就是要插入的联系人的id
  24. Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"_id"}, null, null, null);
  25. //默认联系人id就是1
  26. int contact_id = 1;
  27. if(cursorContactId.moveToLast()){
  28. //拿到主键
  29. int _id = cursorContactId.getInt(0);
  30. //主键+1,就是要插入的联系人id
  31. contact_id = ++_id;
  32. }
  33.  
  34. ContentValues values = new ContentValues();
  35. values.put("contact_id", contact_id);
  36. //把联系人id插入raw_contacts数据库
  37. cr.insert(Uri.parse("content://com.android.contacts/raw_contacts"), values);
  38.  
  39. values.clear();
  40. values.put("data1", "二bi");
  41. values.put("mimetype", "vnd.android.cursor.item/name");
  42. values.put("raw_contact_id", contact_id);
  43. cr.insert(Uri.parse("content://com.android.contacts/data"), values);
  44.  
  45. values.clear();
  46. values.put("data1", "1344567");
  47. values.put("mimetype", "vnd.android.cursor.item/phone_v2");
  48. values.put("raw_contact_id", contact_id);
  49. cr.insert(Uri.parse("content://com.android.contacts/data"), values);
  50. }
  51.  
  52. }
  53. //<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
  54. //<uses-permission android:name="android.permission.READ_CONTACTS"/>

android102 查询,插入联系人的更多相关文章

  1. getContentResolver()内容解析者查询联系人、插入联系人

    首先,我们需要知道的两个Uri: 1.Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");//查到 ...

  2. 查询所有联系人并选中显示 contentprovider

    <!-- 读取联系人记录的权限 --> <uses-permission android:name="android.permission.READ_CONTACTS&qu ...

  3. 安卓+servlet+MySql 查询+插入(汉字乱码解决)

    问题: 安卓程序,通过servlet连接MySQL数据库,并实现查询和插入(修改,删除类似). 其中遇到的最大的问题是:汉字乱码问题(查询条件有汉字乱码.servlet的汉字到数据乱码.安卓通过ser ...

  4. Android向手机通讯录中的所有的联系人(包括SIM卡),向手机通讯录中插入联系人

    package com.example.myapi.phonepersion; import java.util.ArrayList; import java.util.List; import an ...

  5. SQL 变量 条件查询 插入数据

    (本文只是总结网络上的教程) 在操作数据库时 SQL语句中难免会用到变量 比如 在條件值已知的情況下 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值 ...

  6. springmvc+mybatis+redis实现查询插入操作

    最近在学习redis,虽然现在还不是很熟练.不过可以进行简单的框架整合开发. IDE:我使用的是IDEA.springmvc+spring+mybatis的整合这个我就不多说了,下面我们先进行这块的整 ...

  7. 我的一个PLSQL【我】 循环嵌套、游标使用、变量定义、查询插入表、批量提交事务、字符串截取、动态sql拼接执行

    代码块: --CREATE OR REPLACE PROCEDURE PRO_REVENUE_STATISTICS --IS DECLARE --计数器 ins_counter PLS_INTEGER ...

  8. swoole组件----mysql查询,插入数据

    注意!任何swoole函数都应该包含在go(function(){}) 经典查询方法query() go(function (){ $swoole_mysql = new Swoole\Corouti ...

  9. Go_MySQL查询插入删除

    什么是预处理? 普通SQL语句执行过程: 客户端对SQL语句进行占位符替换得到完整的SQL语句. 客户端发送完整SQL语句到MySQL服务端 MySQL服务端执行完整的SQL语句并将结果返回给客户端. ...

随机推荐

  1. Android 应用自动更新功能的代码

    由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必 ...

  2. 创建WCF的客户端

    How to: Create a Windows Communication Foundation Client To create a Windows Communication Foundatio ...

  3. Android开发UI之给ListView设置布局动画效果

    1.通过JAVA代码添加,资源文件基本上不修改 XML文件,只添加了一个ListView,就不贴XML文件的代码了. java代码: public class MainActivity extends ...

  4. PHP位运算 详细说明

    在实际应用中可以做用户权限的应用我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符.| 位或运行符.参与运算的如果是10进制数,则会被转换至2进制数参与 ...

  5. oracle 物化视图及创建索引

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...

  6. [转]ASP.NET MVC 入门5、View与ViewData

    view在MVC模式中与用户进行最直接的接触,它负责数据的呈现.这里要注意一点就是,view只是负责数据的呈现,所以我们应该要尽量让view中不涉及业务逻辑的处理. 我们来添加一个Blog首页的vie ...

  7. Upgrading to EF6

    In previous versions of EF the code was split between core libraries (primarily System.Data.Entity.d ...

  8. jQuery掷骰子

    网上找的jQuery掷骰子效果,测试兼容IE7及以上浏览器,IE6没有测试 js代码如下: $(function(){ var dice = $("#dice"); dice.cl ...

  9. 用 ggplot2 在同一个图上画多条颜色不同的线

    假如数据格式是这样: day    邓文迪    微博    城管0    0.0    9.262970888519191E-4    0.01    0.0    0.00144775855013 ...

  10. linux Grant 添加 MySql 用户

    Grant 添加 MySql 用户 2009-04-03 14:40 我安装的版本: mysql> select version();+------------+| version()   |+ ...