2016-10-11 2 views
1

Ich versuche, contactId von neu hinzugefügten Kontakt programmgesteuert zu erhalten. Kontakt wird erfolgreich hinzugefügt und ruft die contactID von ContentProviderResult [], aber contactId die ich bekomme, ist nicht die richtige. Ich habe auch gesehen this und this antwort aber contactId ist nicht die richtige. Hier ist mein CodeErhalten ContactId zum Zeitpunkt des Einfügens eines neuen Kontakts programmgesteuert zu Telefon in Android

ArrayList<ContentProviderOperation> contentProviderOperation = new ArrayList<>(); 
     ...... 
     ...... 

ContentProviderResult[] results = getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, contentProviderOperation); 
long contactId = ContentUris.parseId(results[0].uri); 

Ich habe auch versucht, den Code unten:

ContentProviderResult[] results = getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, contentProviderOperation); 
      Uri myContactUri = results[0].uri; 

      int lastSlash = myContactUri.toString().lastIndexOf("/"); 
      int length = myContactUri.toString().length(); 
      int contactID = Integer.parseInt((String) myContactUri.toString().subSequence(lastSlash+1, length)); 

Aber die ContactID Ich bin immer hier ist nicht die richtige. Bitte korrigieren Sie mich, wenn ich etwas falsch mache. Danke im Voraus.

Antwort

2

den richtig ContactID durch den folgenden Code, um herauszufinden, regelmäßig habe ich einen Weg finde Nach der Arbeit:

public static int getContactIDFromNumber(String contactNumber, Context context) { 
     contactNumber = Uri.encode(contactNumber); 
     int phoneContactID = new Random().nextInt(); 
     Cursor contactLookupCursor = context.getContentResolver().query(Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, contactNumber), new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID}, null, null, null); 
     while (contactLookupCursor.moveToNext()) { 
      phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup._ID)); 
     } 
     contactLookupCursor.close(); 

     return phoneContactID; 
    } 

Pass des ContactID neu hinzugefügter Kontakt, der in einem Arraylist vorhanden ist. Ich weiß, dass dies nicht der richtige Weg ist, den Kontakt zu finden. Aber es funktioniert für mich.

Verwandte Themen