출처: http://happyryu.tistory.com/265
안드로이드로 앱을 개발할때 가끔씩 전화 이력에 접근해야할 필요가 있을때가 있습니다. 이럴때에는 CallLog를 사용하면 편리한데요, 사용방법은 아래와 같습니다.
먼저 manifests 파일에 권한을 설정해주고요.
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
그 다음은 코드를 구현해주면됩니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// 권한체크 코드 API.23 부터 귀찮아졌네요.
int permissionCamera = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CALL_LOG);
if (permissionCamera == PackageManager.PERMISSION_DENIED)
{
// 권한이 없는경우 권한을 요청하는 Activity 호출
ActivityCompat.requestPermissions(mainActivity, new String[]{Manifest.permission.READ_CALL_LOG}, REQUEST_CALL_LOG);
}
else
{
// 권한이 있으면 바로 전화목록 바로 접근
loadContractHistory();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_CALL_LOG:
for (int i = 0; i < permissions.length; i++) {
String permission = permissions[i];
int grantResult = grantResults[i];
if (permission.equals(Manifest.permission.READ_CALL_LOG))
{
if (grantResult == PackageManager.PERMISSION_GRANTED)
{
// 권한 획득이후 전화 수신발신이력 조회
loadContractHistory();
}
else
{
onBackPressed();
}
break;
}
}
break;
}
}
void loadContractHistory()
{
// CallLog를 사용할 수 있는지 권한체크
int permissionCheck = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_CALL_LOG);
if (permissionCheck == PackageManager.PERMISSION_GRANTED)
{
Cursor cursor = getBaseContext().getContentResolver().query(CallLog.Calls.CONTENT_URI,
null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
if (cursor.getCount() > 0)
{
while (cursor.moveToNext())
{
// 1 : 수신 , 2 : 발신 , 3 : 부재중
int type = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE));
// 이름
String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
// 통화시간
int duration = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.DURATION));
}
} // end of if
} // end of if
}
이렇게 구현해 주면 CallLog를 이용해서 전화 수신 및 발신 이력을 간단하게 조회할 수 있답니다.
'Korean > 안드로이드' 카테고리의 다른 글
유니티로 5분만에 리더보드 점수 랭킹 시스템 적용방법 (안드로이드) (2) | 2017.07.22 |
---|---|
Android 6.0 이후 새로생긴 귀찮은 일 Permission check 하기 (0) | 2017.07.03 |
안드로이드 전화 수신 발신 이력조회 코드 (Android CallLog) (0) | 2017.06.24 |
안드로이드 스튜디오 코드정렬 단축키 (android studio) (0) | 2017.06.23 |
안드로이드 Comparator Sort 사용법 (ArrayList sort by Comparator) (0) | 2017.06.15 |
안드로이드 스튜디오 커스텀 폰트 적용방법(Android Studio custom font) (2) | 2017.06.14 |
'개발 > APP' 카테고리의 다른 글
안드로이드 전화 수발신 이력 발생에 따른 옵저버 처리 (0) | 2018.11.22 |
---|---|
안드로이드 브로드캐스트리시버 제한 업데이트(Oreo 8.0) (1) | 2018.11.22 |
Android 8.0 Oreo 대응 메뉴얼 (0) | 2018.11.22 |
[android 개발] UI Thread 외부에서 UI 관련 작업 호출 하기 (0) | 2018.11.22 |
안드로이드 내부 저장소에 이미지 저장 (0) | 2018.11.22 |