본 글은 [깡샘의 안드로이드 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책을 통해 확인해 주세요.
14장. 인텐트와 구글 기본 앱 연동
14.2.1. 주소록 앱
구글의 기본 앱을 연동할 때 가장 많이 이용되는 앱 중 하나가 주소록입니다. 주소록 앱을 연동하여 주소록 목록 화면을 띄우고 그 목록에서 사용자가 선택한 항목의 전화번호나 이메일을 가져오는 사례가 많습니다.
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 10);
Action 문자열을 Intent.ACTION_PICK, 데이터 정보를 ContactsContract.Contacts.CONTENT_URI로 설정하여 인텐트를 발생시키면 주소록의 목록 화면이 뜨게 됩니다.
결과를 되돌려받고자 startActivityForResult ( ) 함수를 이용한 예입니다.
목록 액티비티가 실행된 후 사용자 선택으로 다시 되돌아왔을 때 onActivityResult ( ) 함수가 자동으로 호출되는데요. 이곳에서 넘어온 결괏값을 확인할 수 있습니다.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==10 && resultCode==RESULT_OK){
String result=data.getDataString();
resultView.setText(result);
}
}
onActivityResult ( ) 함수에서 넘어온 결괏값을 단순히 화면에 출력한 예입니다.
만약 사용자가 주소록 목록 화면에서 홍길동을 선택하여 되돌아왔다고 가정 했을 때 인텐트의 data.getDataString ( ) 함수를 이용하여 넘어온 URL 값을 얻을 수 있는습니다. 이때 URL 정보의 맨 마지막 단어가 선택한 홍길동의 식별자가 됩니다. 이런 식으로 식별자값을 얻은 후 구체적인 전화번호나 이메일 등의 값을 다시 가져와야 하는데요. 이 부분은 앱과 앱 간의 데이터 부분이므로 콘텐츠 프로바이더 부분에서 다루겠습니다.
위의 예에서 주소록 목록 화면을 띄우기 위해 인텐트를 발생시킬 때 setData ( ) 함수의 Uri 값을 다양하게해서 목록 화면에 출력되는 데이터를 조정할 수 있습니다. 예에서는 ContactsContract.Contacts.CONTENT_URI를 이용하였으므로 목록 화면에 가장 기초 정보인 사람 이름만 보이게 됩니다.
- ContactsContract.Contacts.CONTENT_URI: 사람 이름
- ContactsContract.CommonDataKinds.Phone.CONTENT_URI: 사람 이름과 전화번호
- ContactsContract.CommonDataKinds.Email.CONTENT_URI: 사람 이름과 이메일
주소록 앱의 액티비티를 인텐트로 실행하여 한 사람에 대한 상세보기 화면을 띄울 수 있습니다.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(ContactsContract.Contacts.CONTENT_URI+"/"+1066));
startActivity(intent);
Action 문자열이 Intent.ACTION_VIEW이며 Data 정보는 Uri.parse (ContactsContract.Contacts.CONTENT_URI+"/"+1066)로 주어야 하는데, 맨 마지막 숫자는 주소록 쪽의 id 값입니다.
'Android' 카테고리의 다른 글
[깡샘의 안드로이드 프로그래밍] 정리 18 - AsyncTask (0) | 2018.01.05 |
---|---|
[깡샘의 안드로이드 프로그래밍] 정리 17 - 키보드 제어 (0) | 2018.01.05 |
[깡샘의 안드로이드 프로그래밍] 정리 15 - 논리적인 크기 획득 (0) | 2018.01.05 |
[깡샘의 안드로이드 프로그래밍] 정리 14 - MenuInflater (0) | 2018.01.05 |
[깡샘의 안드로이드 프로그래밍] 정리 13 - WebView (0) | 2018.01.05 |