这样是否能获取到通讯录里面的联系人姓名和电话

多云转大雨 2012-04-30 05:04:39

Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while(c.moveToNext()) {
//取得联系人名字
int nameIndex = c.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String name = c.getString(nameIndex);
//取得联系人号码
int numberIndex = c.getColumnIndex(PhoneLookup.NUMBER);
String number = c.getString(numberIndex);
}
...全文
317 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
多云转大雨 2012-05-01
  • 打赏
  • 举报
回复
希望高手能解答一下,谢谢了!
多云转大雨 2012-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

姓名可以得到,但是电话号码不可以这样得。
要去另一个表里查,(估计可能大概是因为一个人可以有多个电话号码)
[/Quote]

我的目的是做个联系人备份,以XML格式储存到SD卡,下面是我的代码,但是每次只是保存最后一次的联系人,如图:

package com.wisher.main;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
private String id = null;
private String name = null;
private String phoneNumber = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
try {
getContact();
Toast.makeText(MainActivity.this, "备份成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}

private void getContact() throws IOException {
Cursor c = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

while (c.moveToNext()) {
id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
name = c.getString(c
.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
Log.i("MainActivity", "Name --> " + name);
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ id, null, null);

XMLWriter output = new XMLWriter(new FileWriter(new File(
"/mnt/sdcard/backup/phoneBackup.xml")));
Document document = DocumentHelper.createDocument();
// 使用addElement创建根元素
Element rootElement = document.addElement("备份");
Element articleElement = rootElement.addElement("属性");

while (phones.moveToNext()) {
phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i("MainActivity", "PhoneNumber --> " + phoneNumber);

Element nameElement = articleElement.addElement("姓名");
nameElement.setText(name);
Element phoneElement = articleElement.addElement("电话");
phoneElement.setText(phoneNumber);

output.write(document);
output.close();

}
phones.close();
}
c.close();
}

}


zzt369880281 2012-04-30
  • 打赏
  • 举报
回复

List<Contact> contacts = new ArrayList<Contact>();
Cursor cursor = context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

int isHas = Integer.parseInt(cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
List<String> numbers = new ArrayList<String>();// 电话号码集

//看看是否有电话号码
if (isHas > 0) {
Cursor c = context.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + id, null, null);
while (c.moveToNext()) {
String number = c
.getString(c
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
numbers.add(number);
}
c.close();
}
Contact contact = new Contact();
contact.setId(Integer.parseInt(id));
contact.setName(name);
contact.setNumbers(numbers);

contacts.add(contact);
}
cursor.close();

zzt369880281 2012-04-30
  • 打赏
  • 举报
回复
姓名可以得到,但是电话号码不可以这样得。
要去另一个表里查,(估计可能大概是因为一个人可以有多个电话号码)

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧