2012-07-19 3 views
0

버튼을 클릭하면 스크롤 할 수있는 연락처 목록이 팝업되기를 원합니다. 그것을 얻는 방법과 컨텐트 해석자, 관리 쿼리 및 어댑터가 작동하는 방법을 이해할 수 없습니다.버튼을 눌러 연락처 가져 오기

나는 다음과 같은 코드로 시도 :

package com.hapybay.rad; 

import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.database.Cursor; 

public class startingPoint extends Activity { 
    Button redcandle; 
    private ListView mContactList; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     /*Obtain handles to UI objects (Constructor)*/ 
     redcandle = (Button) findViewById(R.id.button1); 

     /*Register handle for UI element*/ 
     redcandle.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       populateContactList(); 
      } 
     }); 
    } 

    private void populateContactList() { 
     // Build adapter with contact entries 
     Cursor cursor = getContacts(); 
     String[] fields = new String[] { 
       ContactsContract.Data.DISPLAY_NAME 
     }; 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor, 
       fields, new int[]{R.id.contactEntryText}); 
     mContactList.setAdapter(adapter); 
    } 

    private Cursor getContacts() 
    { 
     // Run query 
     Uri uri = ContactsContract.Contacts.CONTENT_URI; 
     String[] projection = new String[] { 
       ContactsContract.Contacts.LOOKUP_KEY, 
       ContactsContract.Contacts.DISPLAY_NAME }; 
     String selection = null; 
     String[] selectionArgs = null; 
     String sortOrder = null; 

     return managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    } 
} 

답변

0
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, PICK_CONTACT); 

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
    case (PICK_CONTACT) : 
     if (resultCode == Activity.RESULT_OK) { 
     Uri contactData = data.getData(); 
     Cursor c = managedQuery(contactData, null, null, null, null); 
     if (c.moveToFirst()) { 
      String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      // TODO Whatever you want to do with the selected contact name. 
     } 
     } 
     break; 
    } 
} 

이 권한

<uses-permission android:name="android.permission.READ_CONTACTS"/>

을 추가하는 것을 잊지 말아 활동에서이 메소드를 오버라이드 (override)