0

ContactsContract 用のアプリケーションを作成しました...すべてのアカウントを構成するスピナーを作成したため、ユーザーは連絡先の種類 (gmail(com.google)、phoneBook など) を選択できます....

ここで、phoneBook を選択すると、連絡先が phoneBook に完全に追加されます。Gmail オプションを選択すると、htc 携帯電話で完全に動作します... 連絡先が追加され、同期後、Gmail アカウントでも確認できます。

しかし、サムスンの携帯電話でテストしても同じことが、Gmailの連絡先に追加されません....

私は混乱しています...

どんな助けでも大歓迎です。前もって感謝します...

4

1 に答える 1

0

電話番号は独自のテーブルに保存されており、個別に照会する必要があります。電話番号テーブルをクエリするには、SDK変数ContactsContract.CommonDataKinds.Phone.CONTENT_URIに格納されているURIを使用します。WHERE条件を使用して、指定した連絡先の電話番号を取得します。

if (Integer.parseInt(cur.getString(
       cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
    Cursor pCur = cr.query(
    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
    null, 
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
    new String[]{id}, null);
    while (pCur.moveToNext()) {
    // Do something with phones
    } 
    pCur.close();
}

Androidの連絡先SQLiteデータベースに対して2番目のクエリを実行します。電話番号は、ContactsContract.CommonDataKinds.Phone.CONTENT_URIに格納されているURIに対して照会されます。連絡先IDはContactsContract.CommonDataKinds.Phone.CONTACT_IDとして電話テーブルに保存され、WHERE句は返されるデータを制限するために使用されます。

メールアドレス

電子メールアドレスのクエリは、電話番号に似ています。データベースから電子メールアドレスを取得するには、クエリを実行する必要があります。メールアドレステーブルをクエリするには、ContactsContract.CommonDataKinds.Email.CONTENT_URIに保存されているURIをクエリします。

Cursor emailCur = cr.query( 
        ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
        null,
        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
        new String[]{id}, null); 
    while (emailCur.moveToNext()) { 
        // This would allow you get several email addresses
            // if the email addresses were stored in an array
        String email = emailCur.getString(
                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
        String emailType = emailCur.getString(
                      emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
    } 
    emailCur.close();
于 2012-04-04T10:34:00.320 に答える