【问题标题】:Why isn't my edit contact working?为什么我的编辑联系人不起作用?
【发布时间】:2012-11-18 10:33:13
【问题描述】:

我正在显示联系人列表,并有一个上下文菜单可通过调用意图来编辑联系人。在某些联系人上它工作正常,但在其他人的编辑联系人活动是空白的。有什么想法吗?

这里是光标...

 projection = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone._ID};   
 uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
 cursor = getActivity().getContentResolver().query(uri, projection, null, null,    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

这是我的 CursorAdapter.getView() 中的代码...

textView.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)) ;

这是来自我的 onContextItemSelected 的代码...

cursor.moveToPosition(position);
String idContact = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Intent i = new Intent(Intent.ACTION_EDIT);
i.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + idContact));
parent.startActivity(i);

我已经检查了 logcat 并且可以看到

I/ActivityManager(  102): Starting activity: Intent { act=android.intent.action.EDIT dat=content://com.android.contacts/contacts/lookup/23356 cmp=com.android.htccontacts/.ui.EditContactActivity }

但没有错误消息

【问题讨论】:

  • 您注意到不显示联系人的任何模式?滴滴你试试调试吗?
  • 我无法辨别:-( 在模拟器上我只是添加了 3 个联系人,2 个工作,一个没有。在真实设备上,我什么也得不到。我找不到任何要调试的东西.代码正确执行,没有静默异常。我可以看到被触发的意图。在那之后,剩下的就由Android来完成了。我的猜测是CONTENT_LOOKUP_URI有问题,或者我的方式有问题派生联系人 ID。

标签: android android-intent


【解决方案1】:

试试这个:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
Cursor cursor = this.getContentResolver().query(uri, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
long idContact = cursor.getLong(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));

然后

Intent i = new Intent(Intent.ACTION_EDIT);
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, idContact); 
i.setData(contactUri);

【讨论】:

  • 似乎工作得很好。我会做更多的测试,然后接受答案。非常感谢。
  • 我很高兴能帮上忙。主要问题是_ID 而不是CONTACT_ID。联系人数据存储在多个表中,_ID 是其中一个表中的 id。
猜你喜欢
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多