Android-从所有来源获取所有联系人
我一直在尝试制作一个基于2.0构建的Android应用程序,它需要获取用户的所有联系人并以格式化的方式显示 我已经能够使用Android-从所有来源获取所有联系人,android,contacts,android-2.0-eclair,Android,Contacts,Android 2.0 Eclair,我一直在尝试制作一个基于2.0构建的Android应用程序,它需要获取用户的所有联系人并以格式化的方式显示 我已经能够使用光标和Contacts contract.Contacts类获取列表。但是,我从该提供商处获得的列表仅提供了来自用户Google帐户的联系人,或者有两个或更多来源的联系人(例如Google+Facebook、两个Facebook帐户等)。它没有给我完整的清单 那些似乎被忽略的主要是那些只来自用户的Facebook帐户,没有其他来源的 这是我正在使用的查询调用: Cursor
光标和Contacts contract.Contacts
类获取列表。但是,我从该提供商处获得的列表仅提供了来自用户Google帐户的联系人,或者有两个或更多来源的联系人(例如Google+Facebook、两个Facebook帐户等)。它没有给我完整的清单
那些似乎被忽略的主要是那些只来自用户的Facebook帐户,没有其他来源的
这是我正在使用的查询调用:
Cursor contactsCursor = getContentResolver()
.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
我的问题是,是否有可能从用户电话簿中的每个来源(谷歌、Facebook等)获取所有联系人
谢谢 见
OBS1:此代码使用了一种不推荐使用的方法,managedQuery()
您需要使用android.content.CursorLoader重新实现此部分代码
OBS2:mShowInvisible
-如果为true,则无论用户偏好如何,都将列出所有联系人
/**
* Obtains the contact list for the currently selected account.
*
* @return A cursor for for accessing the contact list.
*/
private Cursor getContacts(){
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"(mShowInvisible ? "0" : "1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
我使用了这个代码,它非常好
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
all_contacts_nu = cursor.getCount();
if(cursor!=null&&cursor.getCount()>0)
{
cursor.moveToFirst();
Log.i("MAHDI", "cursor.getCount()="+cursor.getCount());
for(int i =0;i<cursor.getCount();i++)
{
counter++;
FileDisplayActivity.this.get(cursor);
cursor.moveToNext();
writeToFile(vCard.get(i));
}
}
else
{
Log.d("TAG", "No Contacts in Your Phone");
}
ContentResolver cr=getContentResolver();
Cursor Cursor=cr.query(ContactsContract.Contacts.CONTENT\u URI,null,null,null);
所有联系人\u nu=cursor.getCount();
if(cursor!=null&&cursor.getCount()>0)
{
cursor.moveToFirst();
Log.i(“MAHDI”,“cursor.getCount()=”+cursor.getCount());
对于(int i=0;i