투케이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();
		}
	}
}

/* =========================== */

/* =========================== */

[결과 출력]

 

/* =========================== */

반응형
Comments