我不能算出這個...我採用了Android 2.1 SDK如何轉儲聯繫人的所有電話號碼?
BUG: *這將轉儲聯繫人的所有電話號碼除了的自定義標籤的電話號碼.. 。*
我怎樣才能得到它轉儲有自定義標籤的電話號碼呢?
因此,例如我的聯繫人中有一個有3個電話號碼... 2有自定義標籤..所以對於該聯繫人,只有一個電話號碼將被轉儲到日誌中。
至運行,只需從任何活動調用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
您的示例代碼爲我轉儲自定義電話號碼就好了。爲什麼它值得我使用Android 2.3.7,CyanogenMod-7.1.0-Desire(在HTC Desire上)。 – 2012-02-26 10:42:20
有趣......我只是在手機上試了一下......他們都工作......但他們都有像你一樣的薑餅。所以無論是VM(可疑)還是Android 2.1(更可能)(我的VM運行2.1)都有問題。至少我知道不是每個使用我的應用程序的人都會遇到這個問題。 – ycomp 2012-02-27 02:16:06
2.1的錯誤?決不! ;) – 2012-02-27 02:35:48