2013-09-20 1 views
0

мое приложение создает новые контакты с ContentProviderOperation. Проблема в том, что мне нужна ссылка на новый контакт, потому что мне нужна некоторая информация о нем, чтобы отобразить его в списке и идти с намерением в контактное приложение к контакту.Как получить контакт Uri напрямую с созданием контакта

Лучшим будет идентификатор, но я прочитал, что он может измениться во время операций над базой данных, что не будет полезно для меня.

Теперь я подумал, что Uri может быть лучшим, потому что позже я смогу получить ключ contactID или ключ поиска.

Как получить Uri непосредственно после вызова applyBatch()?

EDIT:

Here является решением, но на самом деле не хороший.

Он помещает случайный сгенерированный токен в каждый контакт, затем он создает с ним новый запрос.

Я не хочу ни вводить лишние данные в контакты, ни начинать второй запрос. Но если нет другой возможности, я сделаю так.

ответ

0

просто позвоните

private String retrieveContactId(String phoneNo) { 
     try { 
      Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNo)); 
      String[] projection = new String[] { ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.DISPLAY_NAME }; 
      String selection = null; 
      String[] selectionArgs = null; 
      String sortOrder = ContactsContract.PhoneLookup.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
      ContentResolver cr = getApplicationContext().getApplicationContext().getContentResolver(); 
      String contactId = null; 
      if (cr != null) { 
       Cursor resultCur = cr.query(uri, projection, selection, selectionArgs, sortOrder); 
       if (resultCur != null) { 
        while (resultCur.moveToNext()) { 
         contactId = resultCur.getString(resultCur.getColumnIndex(ContactsContract.PhoneLookup._ID)); 
         Log.e("Info Incoming", "Contact Id : " + contactId); 
         return contactId; 
        } 
        resultCur.close(); 
       } 
      } 
     } catch (Exception sfg) { 
      Log.e("Error", "Error in loadContactRecord : " + sfg.toString()); 
     } 
     return null; 
    } 

и Ури

Uri contactUri = Contacts.getLookupUri(
       Integer.valueOf(rawContactId), clookup); 
+0

это означает, что я должен просто запросить контакт по подмигнули уникальный номер телефона, не так ли? но что, если у некоторых контактов нет номера? –

+0

вы можете запросить таблицу контактов RAW с любым полем, которое у вас есть, а затем получить идентификатор контакта для этой строки контактов RAW – Jow

+0

в порядке, тогда мне может потребоваться запросить каждую деталь, пока не найду совпадение –