Developer MJ Story

[Andorid/Intent] Intent로 Android check box 주소록 call 하고 선택한 주소 return 받기 본문

Software/Android

[Andorid/Intent] Intent로 Android check box 주소록 call 하고 선택한 주소 return 받기

집근처 2014. 6. 9. 11:54
반응형
  • Android phone 내에 저장되어 있는 주소는 주소록 DB에 직접 query를 날려 알오는 방법이 있지만, 매우~~~ 귀찮은 방법이고, 코드이도 상당
  • 간단하게 intent로 android phone에 저장 되어있는 주소록을 call 할 수 있음

 

    • Source Code

                     private static final int Select_Multi_Contact = 1;

 

                    Intent intent = new Intent("com.android.contacts.action.MULTI_TAB_CONTENTS");

                    intent.setType(Phone.CONTENT_TYPE);

                    intent.putExtra("com.android.contacts.extra.FUNC_CODE""getRecipient");

                    intent.putExtra("com.android.contacts.extra.ENABLE_ONLINESEARCH"true);

 

                    startActivityForResult(intent, Select_Multi_Contact);


 

 

  • startActivityForResult()에 Select_Multi_Contact는 사용자가 check한 주소 값을 받아오기 위해 할당
  • Select_Multi_Contact값에 따로 할당하여 onActivityResult()에서나 헛갈림 방지와 코드 reading 효율을 높임
  • 위의 코드를 실행 시키면 아래와 같이 check box가 있는 주소록 activity를 호출

 

 

    <span style="LINE-HEIGHT: 1.42em" >

    • Check box에 check된 주소 값을 onActivityResult()에서 받아옴
  •  

      • Source Code

            publicvoid onActivityResult(int requestCode, int resultCode, Intent intent){

                   super.onActivityResult(requestCode, resultCode, intent);

                   switch(requestCode){

                   caseSelect_Multi_Contact:

                           ArrayList<String> memberNumbers = new ArrayList<String>();

                           ArrayList<String> memberName = new ArrayList<String>();

     

                           memberNumbers  = intent.getStringArrayListExtra("com.android.contacts.extra.numberList");

                           memberName = intent.getStringArrayListExtra("com.android.contacts.extra.nameList");

     

                           ArrayList<String> Members = new ArrayList<String>();

                           int i = 0;

                           for(String Temp : memberName){

                                  Members.add("Name : "+Temp+"\r\nPhone Number : "+memberNumbers.get(i));

                                  i++;

                           }

                          

                           ArrayAdapter<String> Adapter;

                           Adapter = new ArrayAdapter<String>(FNActivity.this, android.R.layout.simple_list_item_1Members);

                          

                           ListView list = (ListView)findViewById(R.id.listview);

                           list.setAdapter(Adapter);

                   }

            }


     

    • 'intent.getStringArrayListExtra("com.android.contacts.extra.numberList");'로 check 된 사용자의 phone number를 받아옴
    • 'intent.getStringArrayListExtra("com.android.contacts.extra.nameList")'로 checck된 사용자의 이름을 받아옴
    • 받아온 사용자의 이름과 phone number를 저장할 Members라는 String arrayList를 생성하고 for문을 이용하여 이름과 phone number를 저장
    • 사용자의 이름과 phone number를 저장할 listview의 adapter를 선언하고 listview를 선언하고 adapter를 등록하여 Members에 저장된 이름과 phone number를 listview에 display
    • listview를 사용하기 위해서 androidMannifest.xml에 listview를 선언하는 건 당연한 것이므로 생략


반응형