在手机内部,对联系人信息存在对应的数据库。我们创建的而联系人信息都存在这张表中。如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注:



好了,现在可以根据数据库里面的数据来写代码了。


代码如下:


package com.itydl.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 {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click(View v){    //通过内容提供者访问联系人数据库    ContentResolver cr = getContentResolver();    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);//1、2、3、4.....    //根据contactId查询出联系人信息data1和mimetype(其实mimetype是做了一个封装,直接根据data表就能获取mimetype类型了)    Cursor cursorData =  cr.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1", "mimetype"},     "raw_contact_id = ?", new String[]{contactId}, null);        Contact con = new Contact();    while(cursorData.moveToNext()){//遍历查询的信息(第一次只遍历id号为1的;一次往下遍历)    String data1 = cursorData.getString(0);//联系人一行里面的信息    String mimetype = cursorData.getString(1);//mimetype类型    //通过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());    }    }    }

当然获取手机联系人信息必须要生命权限的,这里就省略写出来

使用javabean把查询的数据全部保存了起来。当 点击查询按钮后,logcat输出结果如下:

所有联系爱人信息全部暴露无疑:


更多相关文章

  1. 【Android(安卓)Developers Training】 29. 从Activity获得结果
  2. Android杂谈:cup信息查看
  3. Android各种信息的显示
  4. android 抓取LOG的几种命令
  5. Android权限系统(一):开机获取权限信息
  6. Android获取系统cpu信息,内存,版本,电量等信息
  7. Android通过包名获取应用信息
  8. Android[初级教程]第二篇 EditText控件
  9. Android(安卓)获取调用接口的包名

随机推荐

  1. java web开发(三) 接口使用
  2. 国内技术社区活跃的 Android(安卓)大神汇
  3. 星云精准测试对安卓底层驱动代码的测试案
  4. android即时通讯开发笔记(一)绪论~实现用户
  5. Android用户界面布局
  6. Android实现登录界面和功能实例
  7. [Android]如何做一个崩溃率少于千分之三
  8. android SQLite数据库1
  9. 浅言架构——Android(安卓)MVP ...
  10. 9个非常棒的Android代码编辑器 移动开发