#android #calllog
#Android #журнал вызовов
Вопрос:
Я собираю даты вызовов из журнала вызовов, но есть проблема с датами. Я использовал simpledateformat для форматирования чисел, но я получаю ложные данные: годы с 1903 по 1948 год и с 1954 по 2036 год. Это код, который я использую:
final Context context = getApplicationContext();
final String[] projection = null;
final String selection = android.provider.CallLog.Calls.NUMBER "=' 3620455351684'";
final String[] selectionArgs = null;
final String sortOrder = android.provider.CallLog.Calls.DATE " DESC";
Cursor c = null;
try{
c = context.getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI, null, selection, null, sortOrder);
while (c.moveToNext()) {
String callLogID = c.getString(c.getColumnIndex(android.provider.CallLog.Calls._ID));
int numberColumn = c.getColumnIndex(android.provider.CallLog.Calls.NUMBER);
int dateColumn = c.getColumnIndex(android.provider.CallLog.Calls.DATE);
int typeColumn = c.getColumnIndex(android.provider.CallLog.Calls.TYPE);
int outgoingtypeColumn = c.getColumnIndex(android.provider.CallLog.Calls.TYPE "='2'");
int durationColumn = c.getColumnIndex(android.provider.CallLog.Calls.DURATION);
int person = c.getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME);
int duration = c.getInt(durationColumn);
int callDate = c.getInt(dateColumn);
int callType = c.getInt(typeColumn);
String number = c.getString(numberColumn);
String personname = c.getString(person);
SimpleDateFormat datePattern = new SimpleDateFormat ("yyyy-MM-dd");;
datePattern.setTimeZone(TimeZone.getTimeZone("GMT"));
String date_str = datePattern.format(new Date(callDate*1000L));
arr_allcallsduration.add(Integer.toString(duration));
arr_calls.add(Integer.toString(duration) " : " number " : " date_str);
}
}catch(Exception ex){
}finally{
c.close();
}
Вывод:
56 : 3620455351684 : 1948-08-02
425 : 3620455351684 : 1947-06-17
337 : 3620455351684 : 1947-06-13
и т.д.
Ответ №1:
Я нашел решение. Дата вызова должна быть объявлена как длинная:
long callDate = c.getLong(dateColumn);
Еще одна модификация:
String date_str = datePattern.format(new Date(callDate));
Надеюсь, это поможет другим!