我正在开发一个应用程序,其中需要查找联系人组的性质,这意味着它是谷歌组,电话组还是SIM组。怎么找到它。请建议我怎么做。 提前谢谢。
答案 0 :(得分:7)
以下代码打印联系人姓名和类型。我没有优化它,它会打印多个记录,但我想你会知道该怎么做。
package com.example.android.contactmanager;
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.RawContacts;
import android.util.Log;
public final class ContactManager extends Activity{
/**
* Called when the activity is first created. Responsible for initializing the UI.
*/
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
printContactList();
}
/**
* Print contact data in logcat.
* SIM : Account_Type = com.anddroid.contacts.sim
* Phone : Depends on the manufacturer e.g For HTC : Account_Type = com.htc.android.pcsc
* Google : Account_Type = com.google
*/
private void printContactList() {
Cursor cursor = getContacts();
cursor.moveToFirst();
while (cursor.isAfterLast() == false) {
Log.d("Display_Name", cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));
Log.d("Account_Type", cursor.getString(cursor.getColumnIndex(RawContacts.ACCOUNT_TYPE)));
cursor.moveToNext();
}
}
/**
* 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.Data.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
RawContacts.ACCOUNT_TYPE
};
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, null, selectionArgs, sortOrder);
}
}
答案 1 :(得分:0)
我有同样的问题,你提到我解决了这个问题
ArrayList<GroupNameDetails> stateList = new ArrayList<GroupNameDetails>();
final String[] GROUP_PROJECTION = new String[]
{
ContactsContract.Groups._ID, ContactsContract.Groups.TITLE, ContactsContract.Groups.ACCOUNT_TYPE//this line will do the trick
};
Cursor cursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, null,
null, ContactsContract.Groups.TITLE);
while (cursor.moveToNext()) {
String accountname=cursor.getString(cursor.getColumnIndex(ContactsContract.Groups.ACCOUNT_TYPE));
Toast.makeText(getBaseContext(), accountname, Toast.LENGTH_LONG).show();// and it will display group type
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Groups._ID));
Log.v("Test", id);
//ContactsContract.Groups.ACCOUNT_NAME
String gTitle = (cursor.getString(cursor.getColumnIndex(ContactsContract.Groups.TITLE)));
if(favGroupName.contains(gTitle)==false)
{
favGroupId.add(id);
favGroupName.add(gTitle);
GroupNameDetails _states = new GroupNameDetails(Long.parseLong(id),gTitle, false);
stateList.add(_states);
}
Log.v("Test", gTitle);
if (gTitle.contains("Favorite_")) {
gTitle = "Favorites";
}
}