我正在尝试解析所有调用日志,但是只有第一次调用结束时,光标才会超出范围。它抛出2个例外(日期和持续时间)
提前谢谢
我的代码在这里:
if (c != null && c.getCount()>0) {
if (c.moveToFirst()) {!
type = Integer.parseInt(c.getString(c.getColumnIndex(CallLog.Calls.TYPE)));
do {
try{
Log.d(this.getClass().getName(),"Date is "+c.getString(c.getColumnIndex(Calls.DATE)));
}catch(Exception e){
Log.d(this.getClass().getName(),"Exception: DATE IS NULL!!");
}
//String timestamp = c.getString(c.getColumnIndex(Calls.DATE));
//Log.d(this.getClass().getName(),"timestamp is: "+timestamp);
try{
long duration= c.getLong(c.getColumnIndex(CallLog.Calls.DURATION));
}catch(Exception e){
Log.d(this.getClass().getName(),"Exception: DURATION IS NULL!!");
}
//callDuration.put(timestamp, duration);
}
while (!c.moveToNext());
}
}
答案 0 :(得分:0)
由于这是一个do-while循环,我认为条件需要为循环才能继续。
所以你的代码应该说
做{ 这个 } while(c.moveToNext());
当条件变为false时,循环将退出。
解释在这里 - http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html