2011-10-27 25 views
1

私はアドレス帳に連絡先を挿入することに成功し、私は自分のアプリに連絡先のリファレンスを保存する必要があります。参照を保存する最善の方法は、RawContacts ID自体を取得することです。newInsertの後に最後に挿入されたRawContacts IDをアドレス帳にプログラム的に取得する方法は?

新しい連絡先を挿入した直後に直接アドレス帳からIDを取得する方法はありますか?または、RawContacts IDを取得するために、すべてのレコードを取得してデータと比較する必要がありますか?

私はこのコードを使用して、私の挿入を行います。

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
int rawContactInsertIndex = ops.size(); 
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
    .withValue(RawContacts.ACCOUNT_TYPE, null) 
    .withValue(RawContacts.ACCOUNT_NAME, null) 
    .withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED) 
    .build()); 

私は任意の入力に感謝し、その回避策またはAPIからなります。ありがとう!

答えて

8

あなたが情報を使用することができますが、とにかくDBにOPSを追加するために呼び出す必要がありますどのgetContentResolver()(から返された。 getContentResolver()のtry、キャッチ環境を持っている必要があります。

... 
ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
... 
Uri myContactUri = res[0].uri; 
int lastSlash = myContactUri.toString().lastIndexOf("/"); 
int length = myContactUri.toString().length(); 
int contactID = Integer.parseInt((String) myContactUri.toString().subSequence(lastSlash+1, length)); 
+0

ニース!手間のかからないように真っ直ぐに。助けてくれてありがとう= D – Creniale

+8

'contactID = ContentUris.parseId(res [0] .uri));'も動作します。 –

関連する問題