Android有意编辑联系人列表



我正在尝试按意图编辑联系人。我的代码是:

Uri mUri = ContentUris.withAppendedId(Phone.CONTENT_URI,
                            Long.parseLong(mContact.str) );
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setDataAndType(mUri, Contacts.CONTENT_ITEM_TYPE);
intent.putExtra("finishActivityOnSaveCompleted", true);
mActivity.startActivityForResult(intent, EDIT_CONTACT_RESULT);

其中CCD_ 1是联系人的CCD_。该代码适用于不同Android版本的不同设备。然而,我在华为4.2.2上得到了以下错误,没有任何崩溃:

02-04 14:01:23.024: E/ContactLoader(8190): Error loading the contact: content://com.android.contacts/data/phones/22127
02-04 14:01:23.024: E/ContactLoader(8190): java.lang.IllegalArgumentException: uri format is unknown
02-04 14:01:23.024: E/ContactLoader(8190):  at com.android.contacts.util.ContactLoaderUtils.ensureIsContactUri(ContactLoaderUtils.java:64)
02-04 14:01:23.024: E/ContactLoader(8190):  at com.android.contacts.model.ContactLoader.loadInBackground(ContactLoader.java:425)
02-04 14:01:23.024: E/ContactLoader(8190):  at com.android.contacts.model.ContactLoader.loadInBackground(ContactLoader.java:82)
02-04 14:01:23.024: E/ContactLoader(8190):  at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:303)
02-04 14:01:23.024: E/ContactLoader(8190):  at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:68)
02-04 14:01:23.024: E/ContactLoader(8190):  at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:56)
02-04 14:01:23.024: E/ContactLoader(8190):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-04 14:01:23.024: E/ContactLoader(8190):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-04 14:01:23.024: E/ContactLoader(8190):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-04 14:01:23.024: E/ContactLoader(8190):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-04 14:01:23.024: E/ContactLoader(8190):  at java.lang.Thread.run(Thread.java:838)

此外,我在Manifest文件上使用READ_CONTACTSWRITE_CONTACTS权限。

  Uri mUri = ContentUris.withAppendedId(Phone.CONTENT_URI,
                            Long.parseLong(mContact.str) );
  Intent intent = new Intent(Intent.ACTION_EDIT);
  intent.setDataAndType(mUri, Contacts.CONTENT_ITEM_TYPE);
  intent.putExtra("finishActivityOnSaveCompleted", true);
  //add the below line 
  intent.addFlag(intent.FLAG_ACTIVITY_CLEAR_TOP);
  mActivity.startActivityForResult(intent, EDIT_CONTACT_RESULT);

好的,我终于找到了解决方案!URI应该是这样的:

Uri mUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
                                Long.parseLong(mContact.str));

此外,mContact.str应如下所示:

mContact.str = phones.getString(phones
                            .getColumnIndex(Phone._ID));

最新更新