2014-01-30 35 views
0

我能夠獲得接觸的總數,但問題是,它從SQLite和電話簿中的聯繫人數量來從多個不同我從數據庫中獲得。 這裏是我的代碼爲:如何顯示從電話簿聯繫人總數爲文本視圖

Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, null); 
     // Or this cursor 
     Cursor cursor = managedQuery(
       ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, 
       null, null); 

     int count = cursor.getCount(); 

     try { 
      tv1.setText(String.valueOf(count)); 
      Log.i("Contacts: ", String.valueOf(count)); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

我能夠在數據庫中保存的聯繫人的總數,但在電話簿顯示聯繫人的不同。

任何建議或幫助將非常感激。

+0

你得到的結果可能是正確的,因爲在聯繫人應用程序中,它不會計入加入的聯繫人! –

+0

感謝您的信息。有沒有其他的方法來獲得確切的信息? – mike20132013

+0

我想,它與你傳遞的4個空參數有關。嘗試[this]中的不同方法(http://stackoverflow.com/questions/1721279/how-to-read-contacts-on-android-2-0)鏈接。 –

回答

1

我還在學習,所以我敢肯定有比這更快的方式,但我做了什麼,只計算不重複的名字是使用if語句來獲得唯一的名稱分配給我的聯繫人列表和統計數獨特的名字,這給了我一個準確的數字。這裏是我使用的代碼,我希望有人可以採取它,並建議也許更有效的方式。希望這可以幫助。

「nameCount」是你在這個例子中,尋找號碼。

private void getContacts() { 

     String name = ""; 
     String contact_id; 
     int nameCount = 0; 

     uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     projection = new String[] { 
       ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
       ContactsContract.CommonDataKinds.Phone.CONTACT_ID }; 
     selection = null; 
     selectionArgs = null; 
     sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME; 

     Cursor peopleCursor = getContentResolver().query(uri, projection, 
       selection, selectionArgs, sortOrder); 

     if (peopleCursor != null) { 

      int indexName = peopleCursor 
        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
      int indexId = peopleCursor 
        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID); 

      while (peopleCursor.moveToNext()) { 

       // this is a separate activity used for my listView. 
       //It containts 2 strings (name and _id) with getters and setters for both 
       ContactNameItems nameItems = new ContactNameItems(); 

       // Filter out no-name contacts such as auto-added email addresses from gmail 
       // Compare to value of 'name' to see if they're the same, if so then pass 
       if (!peopleCursor.getString(indexName).isEmpty() && 
          !peopleCursor.getString(indexName) 
            .equalsIgnoreCase(name) { 

        name = peopleCursor.getString(indexName); 
        contact_id = peopleCursor.getString(indexId); 
        nameCount++; //Do something with this 


        nameItems.setName(name); 
        nameItems.set_id(contact_id); 

        //Listview to add my 'nameItems' 
        mListView.add(nameItems); 

        mListAdapter.notifyDataSetChanged(); 
       } 
      } 
      peopleCursor.close(); 
     } 
    } 
相關問題