Notice
Recent Posts
Recent Comments
Link
투케이2K
118. (AndroidStudio/android/java) Intent 사용해 모바일 전체 주소록 이동 및 개인 상세 화면 호출 - Intent.ACTION_PICK 본문
Android
118. (AndroidStudio/android/java) Intent 사용해 모바일 전체 주소록 이동 및 개인 상세 화면 호출 - Intent.ACTION_PICK
투케이2K 2021. 4. 27. 12:52/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
//========== [전체 주소록 이동 실시] ==========
public void goAddress(){
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_Address > goAddress() 메소드 : 모바일 주소록 이동 실시]");
Log.d("//===========//","================================================");
Log.d("---","---");
try {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setData(ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 10);
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
}
}
//========== [개인 상세 정보 이동 실시] ==========
public void goPrivateAddress(String user){
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_Address > goPrivateAddress() 메소드 : 개인 상세 정보 이동 실시]");
Log.d("","\n"+"[USER : "+String.valueOf(user)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setData(Uri.parse(ContactsContract.Contacts.CONTENT_URI+"/"+user));
startActivity(intent);
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
}
}
//========== [전체 주소록 응답 받은 값 확인] ==========
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//TODO 모바일 주소록에서 응답값을 받은 경우
if(requestCode == 10 && resultCode == RESULT_OK){
String result = data.getDataString();
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_Address > onActivityResult() 메소드 : 모바일 주소록 응답값 확인]");
Log.d("","\n"+"[응답값 : "+String.valueOf(result)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO 데이터 : content://com.android.contacts/contacts/lookup/2902i878b7f80e1c28f4/185
//TODO 선택한 사용자 값을 추출하기 위해 파싱 실시
try {
int idx = 0;
for(int i=0; i<result.length(); i++){
if(result.charAt(i) == '/'){
idx ++;
}
}
if(idx <= 0){ //TODO 카운트 된 것이 없을 경우
String user = String.valueOf(result.split("/")[idx]);
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_Address > onActivityResult() 메소드 : 모바일 주소록 응답값 파싱 확인]");
Log.d("","\n"+"[파싱값 : "+"Null"+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
}
else {
String user = String.valueOf(result.split("/")[idx]);
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_Address > onActivityResult() 메소드 : 모바일 주소록 응답값 파싱 확인]");
Log.d("","\n"+"[파싱값 : "+String.valueOf(user)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
goPrivateAddress(user); //TODO 개인 사용자 상세 정보 호출 메소드
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments