Android初级教程获取手机系统联系人信息
16lz
2021-01-26
在手机内部,对联系人信息存在对应的数据库。我们创建的而联系人信息都存在这张表中。如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注:
好了,现在可以根据数据库里面的数据来写代码了。
代码如下:
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(安卓)Developers Training】 29. 从Activity获得结果
- Android杂谈:cup信息查看
- Android各种信息的显示
- android 抓取LOG的几种命令
- Android权限系统(一):开机获取权限信息
- Android获取系统cpu信息,内存,版本,电量等信息
- Android通过包名获取应用信息
- Android[初级教程]第二篇 EditText控件
- Android(安卓)获取调用接口的包名