2012-07-03 1 views
0

Я начал создавать свое приложение для api 13, потому что он был достаточно эффективным для большинства пользователей. Но я изменил его на апи 10. Тогда следующий код перестал работать `Невозможно получить uri, основанный на имени контакта

   String empName=data.getStringExtra("name"); 
      String hourPay=data.getStringExtra("hourPay"); 
      String key=""; 
      String id=""; 

      Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, empName); 
      Cursor idCursor = getContentResolver().query(lookupUri, null, null, null, null);     

      idCursor.moveToFirst(); 
      id = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      key = idCursor.getString(idCursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));` 

Проблема заключается в том, что он работает только с контактными именами, написанными на английском языке или те, которые имеют только имя (не фамилия)

Например: Он работает для следующих контактов: Экспресс Сервис, Джордж, Мария Mpakou, Σοφια, без различия между языками

Но когда контакт написан на моем языке (греческий) и имеет пространство (например, Αιμιλιος Δημιος), он возвращает нижний курсор с индексом за пределы.

Когда я впервые попытался использовать api 13, работал как шарм. Кстати, у моего Android.Manifest есть кодировка utf-8, если это что-то связано с этим Пожалуйста, любая рекомендация будет полезной. Благодаря

ответ

0

После долгих поисков я наконец сделал это с другим способом ... как задать Sql запрос для всех контактов

Вот код:

String empName=data.getStringExtra("name"); 
Cursor idCursor = getContentResolver().query(     
ContactsContract.Contacts.CONTENT_URI,null,Contacts.DISPLAY_NAME+" = '"+empName+"'", null, null); 

Это работало как прелесть!