2013-08-17 4 views
0

je tente d'écrire l'application pour lire le nom, prénom et identifiant du contact et spectacle dans listview, j'utiliser le code suivantAndroid récupérer les données du contact

 Cursor cursor = getContentResolver().query(
        ContactsContract.Contacts.CONTENT_URI, null, null, 
        null, null); 
      SmsMultiCasting.selectedRow = new int[cursor.getCount()]; 
      cursor.moveToFirst(); 
      // data = new String[cursor.getCount()][12]; 
      if (cursor.getCount() > 0) { 
       do { 

        try { 
         i++; 
         Log.d("number", String.valueOf(i)); 
         // numberPhone = 0; 
         contactId = cursor 
           .getString(cursor 
             .getColumnIndex(ContactsContract.Contacts._ID)); 

         Uri contactUri = ContentUris.withAppendedId(
           Contacts.CONTENT_URI, 
           Long.parseLong(contactId)); 
         Uri dataUri = Uri.withAppendedPath(contactUri, 
           Contacts.Data.CONTENT_DIRECTORY); 

         Cursor phones = getContentResolver() 
           .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
             null, 
             ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
               + " = " + contactId, null, 
             null); 
         int phonenumber = 0; 
         while (phones.moveToNext()) { 
          phonenumber++; 
         } 

         if (phonenumber > 0) 
         // phones.moveToNext(); 
         { 

          try { 
           Cursor nameCursor = getContentResolver() 
             .query(dataUri, 
               null, 
               Data.MIMETYPE + "=?", 
               new String[] { StructuredName.CONTENT_ITEM_TYPE }, 
               null); 
           nameCursor.moveToFirst(); 
           do { 

            String firstName = nameCursor 
              .getString(nameCursor 
                .getColumnIndex(Data.DATA2)); 

            String lastName = ""; 

            String displayname = cursor 
              .getString(cursor 
                .getColumnIndex(Contacts.DISPLAY_NAME_ALTERNATIVE)); 
            if (!firstName.equals(displayname)) { 
             lastName = nameCursor 
               .getString(nameCursor 
                 .getColumnIndex(Data.DATA3)); 
            } 

            if (firstName.equals(null) 
              && lastName.equals(null)) 
             SmsMultiCasting.Arrayefullname 
               .add("unknown name"); 
            else if (firstName.equals(null)) 
             SmsMultiCasting.Arrayefullname 
               .add(lastName); 
            else if (lastName.equals(null)) 
             SmsMultiCasting.Arrayefullname 
               .add(firstName); 
            else 
             SmsMultiCasting.Arrayefullname 
               .add(firstName + " " 
                 + lastName); 
             SmsMultiCasting.Arrayeid.add(String 
              .valueOf(firstName + " " 
                + lastName + "//" 
                + contactId)); 

           } while (nameCursor.moveToNext()); 
           nameCursor.close(); 
          } catch (Exception e) { 
          } 
         } 
        } 

        catch (Exception t) { 
        } 

         String image_uri = cursor 
           .getString(cursor 
             .getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); 
         SmsMultiCasting.ArrayePhoto.add(image_uri); 
       */  

       } while (cursor.moveToNext()); 

mais ce code en grande date donne l'erreur de me , comment puis-je utiliser un code plus léger pour obtenir des données ???

+0

double possible de [comment obtenir des données de la liste de contact android sur mon séparé listview dans android 2.1?] (http://stackoverflow.com/questions/7803 633/how-to-get-android-contact-list-data-on-my-seperate-listview-in-android-2-1) –

+0

je peux obtenir des données, mais j'ai besoin de code que ce soit dans les grandes données fonctionne bien –

+0

ce lien peut aider: [http://stackoverflow.com/questions/4330565/using-cursor-with-listview-adapter-for-a-large-amount-of-data][1] [1]: http://stackoverflow.com/questions/4330565/using-cursor-with-listview-adapter-for-a-large-amount-of-data –

Répondre

Questions connexes