2013-03-16 5 views
1

나는 내 연락처 활동이 원활하게 작동하도록 노력하고 있습니다. 일반적인 문제이지만, 기존 솔루션을 제 코드에 적용 할 수없는 것처럼 보입니다. 어떤 도움이라도 대단히 감사 할 것입니다, 나는 여기서 머리카락을 찢고 있습니다. 내가 연락처 목록을 반환 위의 코드를 사용하고연락처의 전화 번호를 검색하는 방법 (Android)?

public class nominateContactsActivity extends ListActivity { 
public String strName; 
public String strLoginCode; 
public String strTelNo; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(R.layout.nominatecontactsactivitytest); 

    this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 


    Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 
    startManagingCursor(cursor); 
    String[] contacts = new String[] {ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};  
    String[] columns = new String[] { ContactsContract.Contacts.DISPLAY_NAME}; 
    int[] to = new int[] { android.R.id.text1 }; 

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      android.R.layout.simple_list_item_multiple_choice, cursor, columns, to); 
    this.setListAdapter(adapter); 

    Button finishButton = (Button) this.findViewById(R.id.finishButton); 
    finishButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      SimpleCursorAdapter adapter = (SimpleCursorAdapter) nominateContactsActivity.this.getListAdapter(); 
      Cursor cursor = adapter.getCursor(); 

      ListView lv = nominateContactsActivity.this.getListView(); 
      SparseBooleanArray selectedItems = lv.getCheckedItemPositions(); 
      for (int i = 0; i < selectedItems.size(); i++) { 

       int selectedPosition = selectedItems.keyAt(i); 
       cursor.moveToPosition(selectedPosition); 
       Log.d("", cursor.getString(cursor.getColumnIndex(
         ContactsContract.Contacts.DISPLAY_NAME))+" is checked"); 
       Log.d("", "row id: "+adapter.getItemId(selectedPosition)); 
           } 
     } 
    }); 

- 내가 바란대로이 잘 작동리스트 뷰에서 연락처의 이름을 표시합니다. 그러나 전화 번호는 가져 오지 않으며, 나는 그 (것)들을 얻는 방법을 알아낼 수 없다.

답변

2

다음은 시도 할 수있는 모든 연락 전화 번호와 이름을 읽을 수있는 코드입니다 감사합니다.

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
    while (phones.moveToNext()) 
    { 
     String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
    } 
    phones.close(); 
+1

감사합니다, 감사합니다, 감사합니다! 이것은 2 주 동안 나를 미치게 만들었습니다. – user1593869

+0

환영합니다 ...... :) 기쁜 마음으로 당신을 도왔습니다. :) – GrIsHu

+0

안녕하세요, 전에 도움을 주셔서 너무 고맙습니다. 지금 새로운 문제가 생깁니다 ... 나는 이것 이후 DB에 하나의 연락 만 받습니까? 'Cursor phones = getContentResolver(). query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); while (phones.moveToNext()) { \t strName = phones.getString (phones.getColumnIndex (ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))); strTelNo = phones.getString (phones.getColumnIndex (ContactsContract.CommonDataKinds.Phone.NUMBER))); uploadContacts(); phones.close();} – user1593869

관련 문제