Notice
Recent Posts
Recent Comments
Link
투케이2K
609. (Android/Java) Phone Read Call Log 사용해 휴대폰 전화 통화 목록 로그 기록 확인 - CallLog.Calls 본문
Android
609. (Android/Java) Phone Read Call Log 사용해 휴대폰 전화 통화 목록 로그 기록 확인 - CallLog.Calls
투케이2K 2023. 7. 31. 07:56[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
<!-- ============================================================= -->
<!-- [전화 통화 기록 로그 확인] -->
<!-- ============================================================= -->
<uses-permission android:name="android.permission.READ_CALL_LOG" />
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [RETURN] get_Phone_Call_Log : 안드로이드 통화 기록 조회
// -----------------------------------------------------------------------------------------
public static ArrayList get_Phone_Call_Log(Context mContext) {
/**
* // -----------------------------------------
* [get_Phone_Call_Log 메소드 설명]
* // -----------------------------------------
* 1. 안드로이드 통화 기록 조회
* // -----------------------------------------
* 2. 호출 방식 :
*
* C_App.get_Phone_Call_Log(A_Intro.this);
*
* // -----------------------------------------
* 3. 리턴 데이터 : 최근 통화 목록 기록
* // -----------------------------------------
* 4. 참고 :
*
* 필요 퍼미션 : <uses-permission android:name="android.permission.READ_CALL_LOG" />
*
* 사전 사용자로부터 해당 퍼미션 권한 취득 필요
* // -----------------------------------------
* */
// [리턴 변수 선언]
ArrayList<HashMap<String, Object>> returnData = null;
boolean errorFlag = false;
String m_log = "";
try {
// [사전 퍼미션 권한 부여 상태 체크]
if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_CALL_LOG) == PackageManager.PERMISSION_GRANTED){
}
else {
errorFlag = true;
m_log = "[ERROR] : READ_CALL_LOG : Permission Not Granted";
}
// [로직 수행 실시]
if (errorFlag == false){
String[] callSet = new String[] { CallLog.Calls.DATE, CallLog.Calls.TYPE, CallLog.Calls.NUMBER, CallLog.Calls.DURATION };
Cursor c = mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, callSet, null, null, null);
if (c != null){
m_log = "[SUCCESS] : READ_CALL_LOG : READ";
returnData = new ArrayList<>();
int number = c.getColumnIndex(CallLog.Calls.NUMBER); // [폰 번호]
int type = c.getColumnIndex(CallLog.Calls.TYPE); // [전화 타입]
int date = c.getColumnIndex(CallLog.Calls.DATE); // [일자]
int duration = c.getColumnIndex(CallLog.Calls.DURATION); // [통화 시간]
while (c.moveToNext()) {
String phNumber = c.getString(number);
String callType = c.getString(type);
String callDate = c.getString(date);
Date callDayTime = new Date(Long.valueOf(callDate));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss", Locale.KOREA);
String callDuration = c.getString(duration);
String dir = null;
int dircode = Integer.parseInt(callType);
switch (dircode) {
case CallLog.Calls.OUTGOING_TYPE:
dir = "발신";
break;
case CallLog.Calls.INCOMING_TYPE:
dir = "수신";
break;
case CallLog.Calls.MISSED_TYPE:
dir = "부재중";
break;
case CallLog.Calls.REJECTED_TYPE:
dir = "종료";
break;
}
HashMap <String, Object> map = new HashMap<>();
map.put("PhoneNumber", String.valueOf(phNumber));
map.put("CallType", String.valueOf(dir));
map.put("CallDate", String.valueOf(simpleDateFormat.format(callDayTime)));
map.put("CallDurationSec", String.valueOf(callDuration));
returnData.add(map);
}
}
else {
m_log = "[ERROR] : Cursor Is Null";
}
}
} catch (Exception e) {
S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
m_log = "[EXCEPTION] : " + String.valueOf(e.getMessage());
}
// [로그 출력 실시]
//*
// ===============================================================
S_Log._D_("안드로이드 통화 기록 조회 실시", new String[]{
"M_LOG :: " + String.valueOf(m_log),
"RETURN :: " + String.valueOf(returnData)
});
// */
// [리턴 반환 실시]
return returnData;
}
반응형
'Android' 카테고리의 다른 글
Comments