0
連絡先のメールアドレスを更新したいと思うが、連絡先がメールアドレスを持っていない場合、連絡先に連絡先がないときにContactsContractで電子メールを更新する
#################################################################
W/System.err: Error Code : 0 (SQLITE_OK)
W/System.err: Caused By : unknown error (code 0): Unable to convert BLOB to string
#################################################################
これは私の機能updateMail()
次のとおりです。
public static boolean updateMail(Context context, String id, String email){
ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=? " + "AND "
+ ContactsContract.CommonDataKinds.Organization.TYPE + "=?"
, new String[]{id,
String.valueOf(ContactsContract.CommonDataKinds.Email.TYPE_HOME)});
builder.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
ops.add(builder.build());
return (applyBatch(context, ops));
}
は、たぶん私は連絡先がメールアドレスを持っていない場合、挿入ではなく、更新をしなければならない、あなたはどう思いますか?
EDIT:
たぶん私は、インサートを使用して、正しい選択をしない...私はこれを試してみたが、それは働いていない:
public static boolean updateMail(Context context, String id, String email){
ContentProviderOperation.Builder builder;
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
if (getMailById(context, id).isEmpty()){
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, Integer.valueOf(id));
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
builder.withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_HOME);
ops.add(builder.build());
} else {
builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=? " + "AND "
+ ContactsContract.CommonDataKinds.Organization.TYPE + "=?"
, new String[]{id,
String.valueOf(ContactsContract.CommonDataKinds.Email.TYPE_HOME)});
builder.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
ops.add(builder.build());
}
return (applyBatch(context, ops));
}
*連絡先にメールアドレスがない場合は、更新しないでください。* - はい、最初に値があることを確認してから、それを挿入する存在しません。 – notyou
ありがとうございますが、それでも動作しません。私は私の質問を編集する。 –