電話

0

私はすべての電報の連絡先が自分のアプリケーションで使用するために取得しようとしているに保存されているすべての電報の連絡先を取得し、ここに私のコードです:電話

 Cursor c = getContentResolver().query(
      ContactsContract.RawContacts.CONTENT_URI, 
      new String[] { ContactsContract.RawContacts.CONTACT_ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY }, 
      ContactsContract.RawContacts.ACCOUNT_TYPE + "= ?", 
      new String[] { "org.telegram.messenger.account" }, 
      null); 

    ArrayList<String> myTelegramappContacts = new ArrayList<String>(); 
    int contactNameColumn = c.getColumnIndex(ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY); 
    while (c.moveToNext()) 
    { 
     // You can also read RawContacts.CONTACT_ID to read the 
     // ContactsContract.Contacts table or any of the other related ones. 
     myTelegramappContacts.add(c.getString(contactNameColumn)); 
    } 

が、それは私の接触を返しません!

私の問題は何ですか?

org.telegram.messenger.accountアカウントタイプに該当しますか?電信の勘定タイプはどこにありますか?

ご協力いただきありがとうございます。

答えて

1

が最終的に見つけ、電報のための真のACCOUNT_TYPEは

org.telegram.messenger 

であり、また、このコードにより携帯電話内のすべてのアカウントの種類を見つけることができます。

final Map<String, String> result = new HashMap<>(); 
    final Cursor cursor = getContentResolver() 
      .query(ContactsContract.RawContacts.CONTENT_URI, new String[]{ContactsContract.RawContacts.ACCOUNT_TYPE, ContactsContract.RawContacts.ACCOUNT_NAME}, 
        null, null, 
        null); 
    final int accountNameIdx = cursor.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_NAME); 
    final int accountTypeIdx = cursor.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE); 
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
     result.put(cursor.getString(accountTypeIdx), cursor.getString(accountNameIdx)); 
    } 
    cursor.close(); 
    Log.d("AppLog", "accounts found:"); 
    for (Map.Entry<String, String> account : result.entrySet()) 
     Log.d("AppLog", account.getKey() + ":" + account.getValue()); 

は誰もエルス手助けしたいと考えています。