Android初级教程获取手机系统联系人信息

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

Android初级教程获取手机系统联系人信息_第1张图片


Android初级教程获取手机系统联系人信息_第2张图片

Android初级教程获取手机系统联系人信息_第3张图片


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


代码如下:


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输出结果如下:

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

Android初级教程获取手机系统联系人信息_第4张图片

你可能感兴趣的:(android,数据库,内容提供者,Cursor)