在android 2.1中,如何获得特定联系人的正确Uri
我已经在emulator上编写了一个应用程序并添加了2个联系人,但是我 我无法在android 2.1上更新他们的名字,代码正在运行 安卓1.6平台的以下代码在android 2.1中,如何获得特定联系人的正确Uri,android,android-emulator,Android,Android Emulator,我已经在emulator上编写了一个应用程序并添加了2个联系人,但是我 我无法在android 2.1上更新他们的名字,代码正在运行 安卓1.6平台的以下代码 ContentValues contactValues = new ContentValues(); contactValues.put(Contacts.People.NAME, firstName+" "+lastName); getContentResolver().update(UpdateContactUri, contactV
ContentValues contactValues = new ContentValues();
contactValues.put(Contacts.People.NAME, firstName+" "+lastName);
getContentResolver().update(UpdateContactUri, contactValues, null,
null);
在android 1.6中,我得到了这两个联系人的Uri是“内容://
联系人/人/1“和”content://contacts/people/2“
但在2.1中,我得到的这些值是“content://contacts/people/8"
及"content://contacts/people/9"在更新其内容的同时,
“java.IllegalArgumentException,空值”异常
当我尝试放置一个静态Uri时,如“content://contacts/people/1",
代码调试成功,但联系人未更新
我如何解决这个问题,为什么我没有像1.6平台那样获得uri
提前感谢…2.1 SDK包含名为ContactsContract的联系人的新contentHandler 现在查询的外观有所不同,所以我确信URI也不同。 我们使用的是2.1版本,只能编辑和获取联系人的字段。
请参阅,您可以使用以下代码在emulator中添加联系人。 导入android.provider.Contacts.People
public void addvaluestocontent()
{
ContentValues values = new ContentValues();
values.put(People.NAME, "Abraham Lincoln");
values.put(People._ID, "1");
values.put(People.NUMBER, "23333");
Uri uri = getContentResolver().insert(People.CONTENT_URI, values);
}
在android 2.1中,我使用以下黑客代码更新联系人姓名:
public static void modifyPeopleName(ContentResolver cr, String id,
String sName) {
if (sName == null)
return;
ContentValues values = new ContentValues();
int android_sdk_version = Integer.parseInt(Build.VERSION.SDK);
if (android_sdk_version < 7) {
values.put(People.NAME, sName);
cr.update(People.CONTENT_URI, values, People._ID+"="+id, null);
} else {
values.put("data1", sName);
cr.update(Uri.parse("content://com.android.contacts/data/"),
values, "raw_contact_id=" + id, null);
}
return;
}
public static void modifyPeopleName(ContentResolver cr,字符串id,
字符串(sName){
if(sName==null)
返回;
ContentValues=新的ContentValues();
int-android_-sdk_-version=Integer.parseInt(Build.version.sdk);
如果(android_sdk_版本<7){
values.put(People.NAME,sName);
cr.update(People.CONTENT\u URI,值,People.\u ID+“=”+ID,null);
}否则{
值。put(“数据1”,sName);
cr.update(Uri.parse(“content://com.android.contacts/data/"),
值,“原始联系人id=“+id,null”);
}
返回;
}
Hi eyal感谢您的回复,现在我可以获得不同的uri,如content://com.android.contacts/contacts/16 但无法通过contactValues更新其上的名称。putContactsContract.Contacts.DISPLAY\u name,firstName+“”+lastName);getContentResolver().update(content://com.android.contacts/contacts/16,contactValues,null,null);我得到0,因为没有更新行。这里有什么问题吗?