小编Des*_*tra的帖子

将数据(电话号码,备注等...)添加到现有联系人(ANDROID 2.1)

我遇到了一个大问题:我无法向现有联系人添加数据:(我正在开发一个管理联系人的应用程序,我可以添加,删除或编辑联系人.创建没问题,因为我为联系人创建所有类型的数据(即使它们都是空的)(这不是一个好方法,我稍后会改变它.)因此,当我想编辑这些数据时,我可以将它们发现到数据库(使用Datas. CONTENT_URI)'因为它们已经存在!

但是,如果我使用ANDROID联系人应用程序创建新联系人,则仅为联系人创建填充权限.当我尝试添加新的电话号码,例如我的应用程序时,我收到一个错误:(

这是我尝试添加电话号码的代码:

ContentValues contentValues = new ContentValues();

contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
contentValues.put(ContactsContract.CommonDataKinds.Phone.NUMBER, pNewPhoneNumber.number);
contentValues.put(ContactsContract.CommonDataKinds.Phone.TYPE, pNewPhoneNumber.type);
contentValues.put(ContactsContract.Data.CONTACT_ID, pContact.getContactId());

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

ops.add(ContentProviderOperation.newInsert(
  ContactsContract.Data.CONTENT_URI).withValues(contentValues).build());

try
{
 pContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} 
catch (Exception e)
{
        Context ctx = pContext.getApplicationContext();
        String txt = "Exception encoutered while inserting contact: " + e;
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(ctx, txt, duration);
        toast.show();
 Log.e(TAG, txt);
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

06-23 09:21:54.030: ERROR/DatabaseUtils(111): Writing exception to parcel
06-23 09:21:54.030: ERROR/DatabaseUtils(111): java.lang.NullPointerException
06-23 09:21:54.030: ERROR/DatabaseUtils(111):     at com.android.providers.contacts.ContactsProvider2.insertData(ContactsProvider2.java:2206)
06-23 …
Run Code Online (Sandbox Code Playgroud)

android

2
推荐指数
1
解决办法
4144
查看次数

标签 统计

android ×1