как я могу получить правильный Uri конкретного контакта в Android 2.1 - PullRequest
3 голосов
/ 18 марта 2010

Я написал приложение и добавил 2 контакта на эмуляторе, но я Я не могу обновить свои имена на Android 2.1, код работает на Платформа Android 1.6 со следующим кодом.

ContentValues contactValues = new ContentValues();
contactValues.put(Contacts.People.NAME, firstName+" "+lastName);
getContentResolver().update(UpdateContactUri, contactValues, null,
null);

В Android 1.6 я получаю Uri для этих двух контактов "content: // контакты / люди / 1 "и" содержание: // контакты / люди / 2 ".

но в 2.1 я получаю эти значения "content: // contacts / people / 8" и "content: // contacts / people / 9" и при обновлении его предоставления Исключение «java.IllegalArgumentException, Пустые значения».

Когда я пытался поместить статический Uri, например, «content: // contacts / people / 1», код был успешно отлажен, но контакт не был обновлен.

Как я могу решить эту проблему, почему я не получаю URI, как платформа 1.6?

Заранее спасибо ...

Ответы [ 3 ]

4 голосов
/ 06 сентября 2010

в 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;
}
0 голосов
/ 26 марта 2010

Вы можете использовать приведенный ниже код для добавления контактов в эмулятор. импорт 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);
}
0 голосов
/ 18 марта 2010

2.1 SDK содержит новый contentHandler для контактов с именем ContactsContract запрос теперь перемещен, чтобы выглядеть иначе, поэтому я уверен, что URI тоже другой. Мы работаем в 2.1 только в состоянии редактировать и получать поля контакта. см http://developer.android.com/reference/android/provider/ContactsContract.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...