2012-01-30 13 views
0

の場合、Androidの生の連絡先を更新します。Androidでは、連絡先選択ツールを使用して連絡先を1つ選択すると、CONTACT_IDフィールドのみが取得されます。しかし、一部の連絡先情報を更新するには、未処理の連絡先データを編集する必要があります。これを行うには、RAW_CONTACT_IDを知る必要があります。これまでこれは正しいのでしょうか?連絡先IDが

CONTACT_IDのみの場合、データの更新に必要なRAW_CONTACT_IDはどのようにして取得できますか?このような ... ?

String[] projection = new String[] { ContactsContract.RawContacts._ID }; 
String where = ContactsContract.RawContacts.CONTACT_ID + " = ?"; 
String[] selection = new String[] { String.valueOf(contactId) }; 
Cursor c = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, projection, where, selection, null); 

しかし、あなたは右、選んだユーザーに属するすべて RAW_CONTACT_IDsを取得します。この方法は?どれを更新しなければならない生の連絡先ですか?

「それはあなた次第です」と言いたい場合は、私にとってはすべて同じです。私はちょうど私のデータどこに、データを保持することができる生の連絡先に入れたい。

答えて

0

完璧な答えはありません。しかし、最も簡単で、おそらく最も正しいのは、Googleアカウントを使用することです。

ACCOUNT_TYPEでGoogleアカウントの「com.google」を選択することで可能な操作はどれですか。電話には多くのGoogleアカウントがあるので、最初のもの(またはほとんどの連絡先のもの)を選択してください。

+0

ありがとうございました!いつもGoogleアカウントはありますか?または、クエリでGoogleの生の連絡先が見つからないことがありますか?私は常に1つではないと思いますよね? – caw

+0

常に1つではありません。しかし、あなたが開発しているアプリケーションがアンドロイド市場からダウンロードされているとすれば、あなたは1つしか存在しないと確信することができます。 (マーケットを使うためにログインする必要があるので) – lordl

+0

Facebookとの連絡先をFacebookと同期すると、Facebookの連絡先をマージする他の未処理の連絡先がない場合、おそらくFacebookのraw Googleの未処理の連絡先はありません。これはそうじゃない? – caw

0

すべての未加工の連絡先を確認して、が最高のを更新する必要があります。 Facebook(RAW_CONTACT_IS_READ_ONLY)のような読み取り専用連絡先を除外することができます。 おそらく、更新するフィールドが既に含まれている未処理の連絡先を検索する必要があります。そのようなものが存在しない場合は、Googleアカウントの場合は書き込み可能なアカウントがあればそれになります。状況によっては、書き込み可能なものすべてに書き込むことを検討してください。