android调用日志插入日期

时间:2011-11-04 11:16:43

标签: android

我正在尝试以编程方式在收件箱中插入呼叫日志,但我使用getcontentresolver()进行插入。但当我试图插入日期时,抛出异常。 我有字符串变量“date”,其中日期是“2011-11-04”。我将它传递给values.put(CallLog.Calls.DATE,callDate);

我的代码在这里

ContentValues values = new ContentValues();
values.put(CallLog.Calls.NUMBER, callnumber);
values.put(CallLog.Calls.CACHED_NAME, callLogName);
values.put(CallLog.Calls.DATE, callDate);
values.put(CallLog.Calls.DURATION, callDuration);
values.put(CallLog.Calls.TYPE, callType);
getContentResolver().insert(CallLog.Calls.CONTENT_URI,values);

异常是“java numberformate exception”

2 个答案:

答案 0 :(得分:4)

CallLog.Calls.DATE - 通话发生的日期,自纪元以来的毫秒数

类型:INTEGER(长)

将您的日期转换为毫秒。

        String date = "2011-11-13";

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date newDate = null;
    try {
        newDate = sdf.parse(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     Calendar cal=Calendar.getInstance();
     cal.setTime(newDate);
     cal.getTimeInMillis();

答案 1 :(得分:0)

您必须检查其格式应与之兼容的通话日期格式 将calldate转换为正确的格式 在这里我转换calldate使用此代码可能是它的帮助

    public static void insertPlaceholderCall(ContentResolver contentResolver, String number){
    ContentValues values = new ContentValues();
    values.put(CallLog.Calls.NUMBER, number);
    values.put(CallLog.Calls.DATE, System.currentTimeMillis());
    values.put(CallLog.Calls.DURATION, 0);
    values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE);
    values.put(CallLog.Calls.NEW, 1);
    values.put(CallLog.Calls.CACHED_NAME, "");
    values.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0);
    values.put(CallLog.Calls.CACHED_NUMBER_LABEL, "");
    Log.d(TAG, "Inserting call log placeholder for " + number);
    contentResolver.insert(CallLog.Calls.CONTENT_URI, values);
}

还添加这些权限

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