zoukankan      html  css  js  c++  java
  • Android初级教程获取手机系统联系人信息

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



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


    代码如下:


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

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


  • 相关阅读:
    Python循环-break和continue
    Python-SocketServer
    Python模块-datetime模块
    Python模块-time模块
    dataframe转化(一)之python中的apply(),applymap(),map() 的用法和区别
    python面试题--连续出现最大次数
    消金ABS
    《风控策略笔记》(二)政策与定价--量化风险管理应用
    hadoop fs –stat 命令
    《风控策略笔记》(一)政策与定价--风控体系及政策设计
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299646.html
Copyright © 2011-2022 走看看