2017-12-21 18 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); 

これらの2行を追加すると、アプリケーションは停止します。

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

またはこの行を使用してください。

 long __lngDate = _cursor.getLong(_date); 

これらの行がなければ、アプリケーションは日付/時刻なしで動作します...何が間違っていますか?

注:READ_CALL_LOG

<uses-permission android:name="android.permission.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()); 
} 
答えを自分自身を発見しました
関連する問題