0

私は、コンタクトの詳細を取得しよう。 Phone.CONTENT_URIからDISPLAY_NAME、Phone.DATAを取得できます。私は以下のコードを使用します:アンドロイドでウェブサイトの連絡先情報を取得する方法は?

String urlData = ""; 
    final String[] projection = new String[] { 
      ContactsContract.CommonDataKinds.Website.URL, 
      ContactsContract.CommonDataKinds.Website.TYPE 
    }; 
    final Cursor contactData = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, ContactsContract.Data.CONTACT_ID + "=" + contactId,null, null); 

    if (contactData.moveToNext()) { 

     int urlColumnIndex = contactData.getColumnIndex(ContactsContract.CommonDataKinds.Website.URL); 
     String url = contactData.getString(urlColumnIndex); 
     String urlType = contactData.getString(contactData.getColumnIndex(ContactsContract.CommonDataKinds.Website.TYPE)); 
     urlData += url + " " + urlType; 
     return urlData; 
    } 

display_nameの値を返します。なぜ私はURLデータを取得できないのか分かりません。

私はそれをどのように行うことができますか?

EDIT

私はContacts._IDを持っています。

String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

私は連絡先のURLアドレスを取得するために以下の関数を使用します。

private void getURLById(String id, ContentResolver cr) { 
    Log.i("@@getURLById", "."); 

    final String[] projection = new String[] { 
      ContactsContract.CommonDataKinds.Website.URL, 
      ContactsContract.CommonDataKinds.Website.TYPE 
    }; 

    String selection = ContactsContract.Data._ID + " = " + id + " AND " + ContactsContract.Contacts.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"; 

    final Cursor websites = getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, null, null); 

    Log.e("Count ", " " + websites.getCount()); 

Countが0を返します。

+0

ないあなたがやろうとしているか確認してください、それは場合に役立ちます:

final String[] projection = new String[] { ContactsContract.CommonDataKinds.Website.URL, ContactsContract.CommonDataKinds.Website.TYPE }; String selection = Data.CONTACT_ID + " = " + contactId + " AND " + Data.MIMETYPE + " = '" + CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"; final Cursor contactData = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null); 

UPDATE

Contacts._IDはにあなたの選択を変更、Data._IDではありませんあなたはアンドロイドを介してウェブサイトにアクセスするためにスレッドを使用する必要があります – 131

+0

私はちょうど連絡先のURLデータを取得したいです。なぜ私はスレッドを使用する必要がありますか? –

答えて

0

データテーブルのクエリを維持し、次の選択を追加します。 Data.CONTACT_ID + " = " + contactId + " and " + Data.MIMETYPE + " = '" + CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"

これは型ウェブサイトの行のみを選択します。

コード:、

String selection = ContactsContract.Data.CONTACT_ID + " = " + id + " AND " + ContactsContract.Contacts.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"; 
+0

Website.CONTENT_URIという名前のテーブルはありません。私はそれにアクセスしません。その後、私の編集を参照してください –

+0

、 – marmor

+0

データがないCONTENT_URIテーブルを持って同じ結果を得るための別の方法を追加しました。私は正しい? –

関連する問題