2017-12-21 21 views
0

수신 전화를 이름과 날짜/시간으로 나열하려고합니다.Android CallLogs 날짜 문제 받기

 String[] _Projection = new String[]{CallLog.Calls.NUMBER, 
       CallLog.Calls.TYPE, 
       CallLog.Calls.CACHED_NAME, 
       CallLog.Calls.DATE}; 
     String[] _ARGS = {String.valueOf(CallLog.Calls.INCOMING_TYPE)}; 
     Cursor _cursor = managedQuery(CallLog.Calls.CONTENT_URI, _Projection, CallLog.Calls.TYPE + "=?", _ARGS, null); 
     int _num = _cursor.getColumnIndex(CallLog.Calls.NUMBER); 
     int _tip = _cursor.getColumnIndex(CallLog.Calls.TYPE); 
     int _name = _cursor.getColumnIndex(CallLog.Calls.CACHED_NAME); 
     int _date = _cursor.getColumnIndex(CallLog.Calls.DATE); 

이 두 줄을 추가하면 응용 프로그램이 중지됩니다.

 String strDate = _cursor.getString(_date); 
     long lng = Long.parseLong(strDate); 

또는이 줄을 사용하십시오.

 long __lngDate = _cursor.getLong(_date); 

이 줄이 없으면 응용 프로그램은 날짜/시간없이 작동합니다 ... 내가 뭘 잘못하고 있니?

참고 :이 권한

<uses-permission android:name="android.permission.READ_CALL_LOG"/> 

덕분에 READ_CALL_LOG으로도 베스트 안부

답변

0

내가 답을 찾을 자신

public Loader<Cursor> onCreateLoader(int loaderID, Bundle args) { 
    Log.d("CallLogs", "onCreateLoader() >> loaderID : " + loaderID); 

    switch (loaderID) { 
     case URL_LOADER: 

      String mSelectionClause = android.provider.CallLog.Calls.DATE+ " >= ?"; 
       String[]mSelectionArgs = {createDate()}; 
      // Returns a new CursorLoader 
      return new CursorLoader(
        mContext, // Parent activity context 
        CallLog.Calls.CONTENT_URI,  // Table to query 
        null,  // Projection to return 
        mSelectionClause,   // No selection clause 
        mSelectionArgs,   // No selection arguments 
        CallLog.Calls.DATE + " desc"    // Default sort order 
      ); 
     default: 
      return null; 
    } 

} 


public String createDate() 
{ 
    Calendar calendar = Calendar.getInstance(); 
     calendar.add(Calendar.DATE, -1); 

    return String.valueOf(calendar.getTimeInMillis()); 
}