안드로이드로 앱을 개발할때 가끔씩 전화 이력에 접근해야할 필요가 있을때가 있습니다. 이럴때에는 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를 이용해서 전화 수신 및 발신 이력을 간단하게 조회할 수 있답니다.
'개발 > 앱' 카테고리의 다른 글
유니티로 5분만에 리더보드 점수 랭킹 시스템 적용방법 (안드로이드) (3) | 2017.07.22 |
---|---|
인디게임 몬스터 슬래시 (괴물이 쳐들어왔다) (0) | 2017.07.21 |
Android 6.0 이후 새로생긴 귀찮은 일 Permission check 하기 (0) | 2017.07.03 |
Master of Jump (점프의 달인 유니티 게임) (0) | 2017.06.27 |
안드로이드 스튜디오 코드정렬 단축키 (android studio) (0) | 2017.06.23 |
SPSS 사용법 #3 변수값 직접 설정해보기 (2) | 2017.06.22 |
SPSS 사용법 #2 변수이름과 데이터 입력하는 방법 (0) | 2017.06.21 |
SPSS 사용법 #1 SPSS 체험판 설치하는 방법 (0) | 2017.06.20 |
최근댓글