gpt4 book ai didi

android - 如何转储联系人的所有电话号码?

转载 作者:行者123 更新时间:2023-11-29 02:07:13 25 4
gpt4 key购买 nike

我想不通...我正在使用 Android 2.1 SDK

错误:*这将转储所有联系人的电话号码除了自定义标签电话号码...*

我怎样才能让它转储也有自定义标签的电话号码?

因此,例如,我的联系人中有 1 个有 3 个电话号码...2 个带有自定义标签...因此对于该联系人,只有 1 个电话号码会被转储到日志中。

运行,只需从任何 Activity 调用 DumpContacts.readContacts(this);

package com.abc.debug;

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.util.Log;

public class DumpContacts {
private static final String TAG = "Dump Contacts";

static public void readContacts(Context context)
{
String contactId, hasPhone, phoneNumber;
ContentResolver cr=context.getContentResolver();
Cursor phones, cc = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
while (cc.moveToNext())
{
contactId = cc.getString(cc.getColumnIndex(ContactsContract.Contacts._ID));
hasPhone = cc.getString(cc.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
int nameFieldColumnIndex = cc.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
String contactName = cc.getString(nameFieldColumnIndex);
Log.v(TAG, "Contact id="+contactId+" name="+contactName);
if (Integer.parseInt(hasPhone)==1)
{
// You know it has a number so now query it like this
phones = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
while (phones.moveToNext())
{
phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
String label=getPhoneLabel(context, phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)),
phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL)));
Log.v(TAG, " Phone"+phoneNumber+" with label="+label);
}
phones.close();
}
}
cc.close();
}

static private String getPhoneLabel(Context context, int type, String label)
{
String s;
switch(type)
{
case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
s = "home_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
s = "mobile_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
s = "work_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK:
s = "fax_work_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
s = "fax_home_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER:
s = "pager_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER:
s = "other_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CALLBACK:
s = "callback_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CAR:
s = "car_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN:
s = "company_main_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_ISDN:
s = "isdn_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MAIN:
s = "main_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER_FAX:
s = "other_fax_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_RADIO:
s = "radio_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_TELEX:
s = "telex_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_TTY_TDD:
s = "tty_tdd_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE:
s = "work_mobile_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER:
s = "work_pager_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_ASSISTANT:
s = "assistant_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MMS:
s = "mms_phone";
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM:
if(label == null)
s = "custom";
else
s = "custom:" + label;
break;
default:
s = "default";
}
return s;
}

}

http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html

最佳答案

试试这个。我已经测试了这段代码。

Uri uri = ContactsContract.Contacts.CONTENT_URI;
ContentResolver cr = getContentResolver();
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
Cursor cur=cr.query(uri, null, null, null, sortOrder);
if(cur.getCount()>0){
while(cur.moveToNext()){


if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))> 0) {
//get the phone number
Cursor phoneCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null);
while (phoneCur.moveToNext()) {
String phoneNumber= phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int phonetype = phoneCur.getInt(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
String customLabel = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));
String phoneLabel = (String) ContactsContract.CommonDataKinds.Email.getTypeLabel(this.getResources(), phonetype, customLabel);
Log.e(TAG, "Phone Number: " + phoneNumber + " Selected Phone Label: " + phoneLabel);
}phoneCur.close();
}
}
} cur.close();

关于android - 如何转储联系人的所有电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com