투케이2K

391. (android/java) ContactsContract 사용해 휴대폰 (phone) 주소록에 저장된 연락처 정보 확인 실시 본문

Android

391. (android/java) ContactsContract 사용해 휴대폰 (phone) 주소록에 저장된 연락처 정보 확인 실시

투케이2K 2022. 11. 4. 18:43

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

	// TODO [테스트 메소드 정의 실시]
	public void testMain(){
		Log.i("---","---");
		Log.d("//===========//","================================================");
		Log.i("","\n"+"[Test_Java > testMain() 메소드 : 테스트 함수 동작 실시]");
		Log.d("//===========//","================================================");
		Log.i("---","---");

		/**
		 * ------------------------------------
		 * TODO [요약 설명]
		 * ------------------------------------
		 * 1. 필요 퍼미션 :
		 *
		 * <uses-permission android:name="android.permission.READ_CONTACTS"/>
		 * ------------------------------------
		 * */


		try {

			// [연락처를 담을 배열 및 Cursor 선언 실시]
			ArrayList dataList = new ArrayList<Map<String, String>>();
			Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
					null, null, null,
					ContactsContract.Contacts.DISPLAY_NAME_PRIMARY + " asc");


			// [루프를 돌면서 연락처 정보 확인]
			while (c.moveToNext()) {
				// Map 선언
				HashMap<String, String> map = new HashMap<String, String>();

				// 연락처 ID 값
				String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));

				// 연락처 대표 이름
				String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY));
				map.put("name", name); // TODO 이름

				// ID 로 전화 정보 조회
				Cursor phoneCursor = getContentResolver().query(
						ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
						null,
						ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id,
						null, null);

				// 데이터가 있는 경우
				if (phoneCursor.moveToFirst()) {
					String number = phoneCursor.getString(phoneCursor.getColumnIndex(
							ContactsContract.CommonDataKinds.Phone.NUMBER));
					map.put("phone", number); // TODO 휴대폰 번호
				}
				phoneCursor.close();

				// 배열에 추가 실시
				dataList.add(map);
			}


			// [로그 결과 출력 실시]
			Log.i("---","---");
			Log.w("//===========//","================================================");
			Log.i("","\n"+"[Test_Java > testMain() 메소드 : 로그 결과 출력]");
			Log.i("","\n"+"[count : "+String.valueOf(dataList.size())+"]");
			Log.i("","\n"+"[dataList : "+String.valueOf(dataList)+"]");
			Log.w("//===========//","================================================");
			Log.i("---","---");
		}
		catch (Exception e){
			Log.i("---","---");
			Log.e("//===========//","================================================");
			Log.i("","\n"+"[Test_Java > testMain() 메소드 : 예외 상황 발생 확인]");
			Log.i("","\n"+"[error : "+String.valueOf(e.getMessage())+"]");
			Log.e("//===========//","================================================");
			Log.i("---","---");
		}
	}
 

[결과 출력]

 

 

반응형
Comments