2013-03-04 5 views
0

Я использую поставщик контента «Calls.CONTENT_URI». Я уже получил имена столбцов, но теперь я хотел бы получить, скажем, ВСЕ имена из имени столбца «имя» в этом контент-провайдере.Получить список всех имен в поставщике контента

У меня есть код ниже:

uri = Calls.CONTENT_URI; 

    String[] projection = {"name"}; 
    String selection = null; 
    String[] selectionArgs = null; 
    String sort = null; 


    resolver = getContentResolver(); 

    cursor = resolver.query(uri, projection, selection, selectionArgs, sort); 
    Log.i("TUTORIAL", "counts :"+cursor.getCount());  

    String s; 
    cursor.moveToFirst(); 

    for(int x=0; x<cursor.getCount(); x++){ 

     s = cursor.getString(x); 
     Log.i("TUTORIAL", ""+s); 

     //cursor.moveToNext(); 


    } 

Но это retrives только одно имя. Я хотел бы иметь список всех имен, сохраненных в телефоне, как:

Джон Питер Марк Сюзи . . X

Но теперь я получил только одно имя, как:

Петра. Надеюсь, я был достаточно ясен.

В чем проблема? Благодарим за помощь заранее.

ответ

0

Я думаю, что это поможет вам

 ArrayList<String> nameList = new ArrayList<String>(); 
    String[] projection = {"name"}; 
    String selection = null; 
    String[] selectionArgs = null; 
    String sort = null; 
    resolver = getContentResolver(); 
    cursor = resolver.query(uri, projection, selection, selectionArgs, sort); 
    Log.i("TUTORIAL", "counts :"+cursor.getCount());  
    String s; 
    if(cursor.moveToFirst()) { 
     do { 
      nameList.add(cursor.getString(0)); 
      //your code 
      //s = cursor.getString(x); 
      Log.i("TUTORIAL", ""+cursor.getString(0)); 
     }while(cursor.moveToNext()); 
    } 
+0

и как я могу получить реальное имя из таблицы? Я думаю, я не должен использовать "cursor.getString (x);"? – rootpanthera

+0

Я отредактировал свой ответ. Попробуйте этот новый. –

+0

Это работает. Спасибо, за вашу помощь и время. – rootpanthera

0

вы можете попробовать это, он работает для меня:

public void readContacts() { 
     Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

        // Get contact id (id) 
        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

        // Get contact name (displayName) 
        String displayName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       } 
      } 
     } 
     cur.close(); 
    } 
0

Это код.

public class MainActivity extends AppCompatActivity { 
SimpleCursorAdapter mAdapter; 
MatrixCursor mMatrixCursor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // The contacts from the contacts content provider is stored in this cursor 
    mMatrixCursor = new MatrixCursor(new String[] { "_id","name","photo","details"}); 

    // Adapter to set data in the listview 
    mAdapter = new SimpleCursorAdapter(getBaseContext(), 
      R.layout.lv_layout, 
      null, 
      new String[] { "name","photo","details"}, 
      new int[] { R.id.tv_name,R.id.iv_photo,R.id.tv_details}, 0); 

    // Getting reference to listview 
    ListView lstContacts = (ListView) findViewById(R.id.lst_contacts); 

    // Setting the adapter to listview 
    lstContacts.setAdapter(mAdapter); 

    // Creating an AsyncTask object to retrieve and load listview with contacts 
    ListViewContactsLoader listViewContactsLoader = new ListViewContactsLoader(); 

    // Starting the AsyncTask process to retrieve and load listview with contacts 
    listViewContactsLoader.execute(); 
} 

/** An AsyncTask class to retrieve and load listview with contacts */ 
private class ListViewContactsLoader extends AsyncTask<Void, Void, Cursor> { 

    @Override 
    protected Cursor doInBackground(Void... params) { 
     Uri contactsUri = ContactsContract.Contacts.CONTENT_URI; 

     // Querying the table ContactsContract.Contacts to retrieve all the contacts 
     Cursor contactsCursor = getContentResolver().query(contactsUri, null, null, null,ContactsContract.Contacts.DISPLAY_NAME + " ASC "); 

     if(contactsCursor.moveToFirst()){ 
      do{ 
       long contactId = contactsCursor.getLong(contactsCursor.getColumnIndex("_ID")); 

       Uri dataUri = ContactsContract.Data.CONTENT_URI; 

       // Querying the table ContactsContract.Data to retrieve individual items like 
       // home phone, mobile phone, work email etc corresponding to each contact 
       Cursor dataCursor = getContentResolver().query(dataUri, null, 
         ContactsContract.Data.CONTACT_ID + "=" + contactId, 
         null, null); 

       String displayName=""; 
       String nickName=""; 
       String homePhone=""; 
       String mobilePhone=""; 
       String workPhone=""; 
       //String photoPath="" + R.drawable.blank; 
       byte[] photoByte=null; 
       String homeEmail=""; 
       String workEmail=""; 
       String companyName=""; 
       String title=""; 

       if(dataCursor.moveToFirst()){ 
        // Getting Display Name 
        displayName = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); 
        do{ 

         // Getting NickName 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE)) 
          nickName = dataCursor.getString(dataCursor.getColumnIndex("data1")); 

         // Getting Phone numbers 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)){ 
          switch(dataCursor.getInt(dataCursor.getColumnIndex("data2"))){ 
           case ContactsContract.CommonDataKinds.Phone.TYPE_HOME : 
            homePhone = dataCursor.getString(dataCursor.getColumnIndex("data1")); 
            break; 
           case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE : 
            mobilePhone = dataCursor.getString(dataCursor.getColumnIndex("data1")); 
            break; 
           case ContactsContract.CommonDataKinds.Phone.TYPE_WORK : 
            workPhone = dataCursor.getString(dataCursor.getColumnIndex("data1")); 
            break; 
          } 
         } 

         // Getting EMails 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) { 
          switch(dataCursor.getInt(dataCursor.getColumnIndex("data2"))){ 
           case ContactsContract.CommonDataKinds.Email.TYPE_HOME : 
            homeEmail = dataCursor.getString(dataCursor.getColumnIndex("data1")); 
            break; 
           case ContactsContract.CommonDataKinds.Email.TYPE_WORK : 
            workEmail = dataCursor.getString(dataCursor.getColumnIndex("data1")); 
            break; 
          } 
         } 

         // Getting Organization details 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)){ 
          companyName = dataCursor.getString(dataCursor.getColumnIndex("data1")); 
          title = dataCursor.getString(dataCursor.getColumnIndex("data4")); 
         } 

         // Getting Photo 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)){ 
          photoByte = dataCursor.getBlob(dataCursor.getColumnIndex("data15")); 

          if(photoByte != null) { 
           Bitmap bitmap = BitmapFactory.decodeByteArray(photoByte, 0, photoByte.length); 

           // Getting Caching directory 
           File cacheDirectory = getBaseContext().getCacheDir(); 

           // Temporary file to store the contact image 
           File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"+contactId+".png"); 

           // The FileOutputStream to the temporary file 
           try { 
            FileOutputStream fOutStream = new FileOutputStream(tmpFile); 

            // Writing the bitmap to the temporary file as png file 
            bitmap.compress(Bitmap.CompressFormat.PNG,100, fOutStream); 

            // Flush the FileOutputStream 
            fOutStream.flush(); 

            //Close the FileOutputStream 
            fOutStream.close(); 

           } catch (Exception e) { 
            e.printStackTrace(); 
           } 
           // photoPath = tmpFile.getPath(); 
          } 
         } 
        }while(dataCursor.moveToNext()); 
        String details = ""; 

        // Concatenating various information to single string 
        if(homePhone != null && !homePhone.equals("")) 
         details = "HomePhone : " + homePhone + "\n"; 
        if(mobilePhone != null && !mobilePhone.equals("")) 
         details += "MobilePhone : " + mobilePhone + "\n"; 
        if(workPhone != null && !workPhone.equals("")) 
         details += "WorkPhone : " + workPhone + "\n"; 
        if(nickName != null && !nickName.equals("")) 
         details += "NickName : " + nickName + "\n"; 
        if(homeEmail != null && !homeEmail.equals("")) 
         details += "HomeEmail : " + homeEmail + "\n"; 
        if(workEmail != null && !workEmail.equals("")) 
         details += "WorkEmail : " + workEmail + "\n"; 
        if(companyName != null && !companyName.equals("")) 
         details += "CompanyName : " + companyName + "\n"; 
        if(title != null && !title.equals("")) 
         details += "Title : " + title + "\n"; 

        // Adding id, display name, path to photo and other details to cursor 
        mMatrixCursor.addRow(new Object[]{ Long.toString(contactId),displayName,null,details}); 
       } 
      }while(contactsCursor.moveToNext()); 
     } 
     return mMatrixCursor; 
    } 

    @Override 
    protected void onPostExecute(Cursor result) { 
     // Setting the cursor containing contacts to listview 
     mAdapter.swapCursor(result); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

}

Смежные вопросы