2014-09-16 4 views
1

Я разрабатываю приложение, работающее с контактами и календарем.Использование Entity Uri для получения информации о контакте на Sony Xperia SP

Мне тяжело работать со специальным устройством Sony Xperia SP, но я не мог найти кого-либо другого с такой же проблемой.

Я пытаюсь получить отображаемое имя и номер телефона контактов моего аппарата, с помощью Entity Uri доступны в Android Апи: http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.Entity.html

К сожалению, этот код работает хорошо на Samsung Galaxy S4 заранее, где я получаю все детали, которые я запрашиваю, Но на Sony Xperia SP я получаю нелегальное нарушение, которое подробно описано в стеке: Недопустимое имя отображаемого имени столбца.

Ниже приведен код, я использую:

ContentResolver cr = context.getContentResolver(); 
Uri rawUri = RawContacts.CONTENT_URI; 
String[] rawProjection = { RawContacts._ID }; 
String rawSelection = RawContacts.ACCOUNT_NAME + " = ? AND " + RawContacts.ACCOUNT_TYPE + " = ?"; 
String[] rawSelectionArgs = new String[] { account.name, account.type }; 

    Cursor rawCursor = cr.query(rawUri, rawProjection, rawSelection, rawSelectionArgs, null); 

    while (rawCursor.moveToNext()) { 

     long contactId = rawCursor.getLong(0); 

     Uri entityUri = Uri.withAppendedPath(ContentUris.withAppendedId(rawUri, contactId), Entity.CONTENT_DIRECTORY); 
     String[] entityProjection = new String[] { Data.DISPLAY_NAME, CommonDataKinds.Phone.NORMALIZED_NUMBER }; 
     String entitySelection = Entity.MIMETYPE + " = ?"; 
     String[] entitySelectionArgs = new String[] { CommonDataKinds.Phone.CONTENT_ITEM_TYPE }; 
     Cursor entityCursor = cr.query(entityUri, entityProjection, entitySelection, entitySelectionArgs, null); 

     while (entityCursor.moveToNext()) { 
      String name = entityCursor.getString(entityCursor.getColumnIndex(Data.DISPLAY_NAME)); 
      String number = entityCursor.getString(entityCursor.getColumnIndex(CommonDataKinds.Phone.NORMALIZED_NUMBER)); 
     } 

     entityCursor.close(); 

    } 

Я пытался поставить проекцию моего entityQuery в нуль, искать какие поля возвращаются этим запросом, и в самом деле, поля возвращены не то же самое, что и устройство,

Кто-нибудь знает, почему эти поля не видны на Sony Xperia SP, и какое обходное решение я мог бы использовать там?

ответ

-1

Убедитесь, что вы дали разрешение на чтение контактов. У меня такая же проблема при выборе контакта.

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

Давай, вы даже прочитали мой вопрос? ответ полностью исключается. Я сказал, что мой код работает над Galaxy S4, если бы у меня не было разрешения, это не было бы .. – tchoum