3

ユーザーのすべての連絡先を取得し、フォーマットされた方法で表示する必要がある、2.0 に対してビルドされた Android アプリケーションを作成しようとしています。

CursorContactsContract.Contactsクラスを使用してリストを取得できました。ただし、そのプロバイダーから取得したリストには、ユーザーの Google アカウントからの連絡先、または 2 つ以上のソース (Google + Facebook、2 つの Facebook アカウントなど) を持つ連絡先のみが表示されます。リスト全体が表示されるわけではありません。

取り残されているように見えるのは、主にユーザーの Facebook アカウントからのみ取得されたもので、他にソースはありません。

これは私が使用しているクエリ呼び出しです:

Cursor contactsCursor = getContentResolver()
    .query(android.provider.ContactsContract.Contacts.CONTENT_URI, 
        null, null, null, null);

私の質問は、ユーザーの電話帳のすべてのソース (Google、Facebook など) からすべての連絡先を取得することは可能ですか?

ありがとう!

4

2 に答える 2

2

ContactManagerを参照

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);
}
于 2011-04-04T19:59:52.040 に答える
0

私はこのコードを使用しましたが、かなり良いです。

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");
                  }
于 2015-03-30T05:47:56.247 に答える