連絡先を追加したり削除したりできるアプリがあります。また、既存の連絡先に既存の値がある場合は、それを正常に変更することができます。しかし、私は既存の連絡先に新しい値を挿入することができないようです。自宅の電話番号のためではなく、職場の電話番号の既存の値がある場合たとえば、私は値を追加するfillowingを使用してみました(cintact idValue
とworkNumber
が渡されます):Androidでプログラムで連絡先に電話番号を追加するにはどうすればよいですか?
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Data.CONTACT_ID, idValue)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, workNumber)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
しかし、私はNullPointerExceptionを取得します。
java.lang.NullPointerException
at com.android.providers.contacts.ContactsProvider2.insertData(ContactsProvider2.java:2604)
at com.android.providers.contacts.ContactsProvider2.insertInTransaction(ContactsProvider2.java:2452)
at com.android.providers.contacts.SQLiteContentProvider.insert(SQLiteContentProvider.java:106)
at com.android.providers.contacts.ContactsProvider2.insert(ContactsProvider2.java:2256)
at android.content.ContentProviderOperation.apply(ContentProviderOperation.java:214)
at com.android.providers.contacts.SQLiteContentProvider.applyBatch(SQLiteContentProvider.java:216)
at com.android.providers.contacts.ContactsProvider2.applyBatch(ContactsProvider2.java:2290)
at android.content.ContentProvider$Transport.applyBatch(ContentProvider.java:217)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:194)
at android.os.Binder.execTransact(Binder.java:336)
at dalvik.system.NativeStart.run(Native Method)
私が間違っていることを教えてもらえますか?
ありがとう、それは私の骨頭でしたが、それは問題の原因ではありませんでした。元の投稿のコードを更新しましたが、まだエラーが発生しています。 – user496854
これはあなたの問題ではないようです。 – Vivek
それはどういう意味ですか?コードは例外的なものです - 私の目的のためにどうすれば問題になるのですか? – user496854