Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android 2.1中,如何获得特定联系人的正确Uri_Android_Android Emulator - Fatal编程技术网

在android 2.1中,如何获得特定联系人的正确Uri

在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

我已经在emulator上编写了一个应用程序并添加了2个联系人,但是我 我无法在android 2.1上更新他们的名字,代码正在运行 安卓1.6平台的以下代码

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,因为没有更新行。这里有什么问题吗?