2011-01-06 77 views
4

我正在開發一個應用程序,它需要找到聯繫人組的性質,這意味着它是谷歌組,電話組還是SIM組。如何找到它。請告訴我如何去做。 在此先感謝。查找聯繫人組的帳戶性質?

回答

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); 
} 
} 
+0

很好的解決方案相同的問題....對我很好地工作 – 2015-11-04 06:07:01

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"; 

       } 

      } 
相關問題