【问题标题】:Get Calls Log error获取通话记录错误
【发布时间】:2014-11-11 20:00:03
【问题描述】:

我正在做一个获取通话记录的程序,但我遇到了一些问题。 我在这个程序运行时发生了崩溃,崩溃是数字格式异常无效 int 1415715471534。任何人都可以解决这个问题吗?这是我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_satu);
    Cursor mCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, null);
    int  number = mCursor.getColumnIndex(CallLog.Calls.NUMBER);
    int date = mCursor.getColumnIndex(CallLog.Calls.DATE);
    int duration = mCursor.getColumnIndex(CallLog.Calls.DURATION);
    int type = mCursor.getColumnIndex(CallLog.Calls.TYPE);
    StringBuilder sb = new StringBuilder();

    while(mCursor.moveToNext()){
        String phnNumber = mCursor.getString((int) number);
        String callDuration = mCursor.getString(duration);
        String callType = mCursor.getString(type);
        String callDate = mCursor.getString(date);
        Date d = new Date(callDate);
        String callTypeStr = null;
        int dircode = Integer.parseInt(callType);
        switch (dircode){           
        case CallLog.Calls.OUTGOING_TYPE:
            callTypeStr = "Outgoing";
            break;
        case CallLog.Calls.INCOMING_TYPE:
            callTypeStr = "Incoming";
            break;
        case CallLog.Calls.MISSED_TYPE:
            callTypeStr = "Missed";
            break;
        }
        sb.append("Phone number" + phnNumber);
        sb.append("Call Duration" + callDuration);
        sb.append("Call type" + callTypeStr);
        sb.append("Call date" + d);
        sb.append("-------------------");
        sb.append(System.getProperty("line.separator"));

        mCursor.close();        

    }
    TextView callDetails = (TextView) findViewById(R.id.callog);
    callDetails.setText(sb.toString());
}

【问题讨论】:

  • 你能发布异常的踪迹吗?哪一行是异常?
  • 当我运行它时,它崩溃并给出一个 logcat 错误:java.lang.NumberFormatException:invalid int:"1415715471534"
  • 异常跟踪应该提供更多信息:错误在哪一行,在哪个函数中,等等
  • 只使用 long 而不是 int。

标签: android call


【解决方案1】:

我认为问题在于int 可以容纳的最大值是2^31-1。你的价值1415715471534 不止于此。这就是您收到错误的原因。

【讨论】:

  • 那我该怎么办?对不起,我还是新手
  • 可以在解析之前打印callType的值吗?似乎错误可能是由于这个原因。
猜你喜欢
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多