2014-10-18 3 views
0

나는 Phonestatelistener에서 알 수 있듯이 전화가 걸려 오거나 울리거나 뽑히는 등의 통화 유형을 알게 될 것입니다. 그러나 한 번 전화가 끝나면 즉 전화기가 유휴 상태에 이르면 알기를 원합니다. 호출의 상태는안드로이드에서 통화 상태를 알아 보는 방법

이며, 91123456789 수신 통화, 통화가 끝나면 후, 숫자가 부재중 전화로 전화 통화 로그에 저장 될 것이다, 그것은웠다 놓친 또는

걸릴 수 있습니다

을 거부, 무엇 이었습니까 특정 번호 +91123456789에 대한 통화 로그에서 최근 상태를 가져 오는 방법이 있습니까?

답변

2

다음은 부재 중 전화에 대한 통화 로그를 쿼리 할 수있는 코드입니다. 기본적으로이 작업을 실행해야하고 통화 기록을 너무 빨리 확인하면 가장 최근의 통화를 찾을 수 없으므로 정보를 쓰는 데 몇 초 (몇 초) 걸릴 수 있도록 통화 기록을 남겨야합니다.

int MISSED_CALL_TYPE = android.provider.CallLog.Calls.MISSED_TYPE 
final String[] projection = null; 
final String selection = null; 
final String[] selectionArgs = null; 
final String sortOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
Cursor cursor = null; 
try{ 
    // cursor = context.getContentResolver().query(
    //   Uri.parse("content://call_log/calls"), 
    //   projection, 
    //   selection, 
    //   selectionArgs, 
    //   sortOrder); 
cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + "=? ", yourNumber, sortOrder); 
     while (cursor.moveToNext()) { 
      String callLogID = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls._ID)); 
      String callNumber = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER)); 
      String callDate = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.DATE)); 
      String callType = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.TYPE)); 
      String isCallNew = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NEW)); 
      if(Integer.parseInt(callType) == MISSED_CALL_TYPE && Integer.parseInt(isCallNew) > 0){ 
       if (_debug) Log.v("Missed Call Found: " + callNumber); 
break ; 
       } 
      } 
     }catch(Exception ex){ 
      if (_debug) Log.e("ERROR: " + ex.toString()); 
     }finally{ 
      cursor.close(); 
     } 

다른 주와 마찬가지로이 방법이 유용하다고 생각합니다.

잘 그 하나 호출하는 경우,

+0

안녕하세요, 감사합니다, 내가 phonestatelistener 하나의 방법을 발견 매니페스트 android.permission.READ_CONTACTS에이 권한을 추가하려면이 작업을 수행. 내가 전화를받은 & 나는 대기 상태에있을 것입니다 다른 수신 전화를받을 경우, 그 대기 전화를 잡아 & 체크 그것을 놓친 전화인지 아닌지 알아야합니까? – Naruto

+0

이 코드가 수행하는 작업 thats, 부재중 전화가있는 경우 최근 부재중 전화가 대기중인 특정 번호에서 왔는지 확인하기 위해 콜 로그를 쿼리 할 수 ​​있습니다. –

+0

하지만 말씀 드렸듯이 가끔씩 전화가 걸려 로그를 업데이트하기도합니다. 정보가 정확하지 않습니까? – Naruto

관련 문제