Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
for (int i = 0; i < c.getColumnCount(); i++) {
Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i));
}
4.0.x에서는 모든 colume 이름을 얻을 수 있지만 4.0.x에서는 _id 만 사용합니다. 내 코드에 어떤 문제가 있습니까? 미리 Thx!getContentResolver() 질의에 관하여 CallLog
Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
for (int i = 0; i < c.getColumnCount(); i++) {
Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i));
}
while (c.moveToNext()) {
for (int i = 0; i < c.getColumnCount(); i++) {
Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i) + " = " + c.getInt(i) + "/" + c.getString(i));
} ...
위의 코드는 4.0.x에서 잘 작동합니다. 데이터베이스의 차이점이 있습니까?
@Anu, 이것은 잘못 뭔가를해야만 발견하면 내 전체 코드는, 친절하게 말해주십시오입니다 :
private void retrieveCall()
{
Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
if (c != null) {
while (c.moveToNext()) {
String number = c.getString(c.getColumnIndex("number"));
String name = c.getString(c.getColumnIndex("name"));
long date = c.getLong(c.getColumnIndex("date"));
if (number.length() > 0) {
LogDetail log = null;
if (_callTable.containsKey(number)) {
log = (LogDetail) _callTable.get(number);
log.name = name;
log.date = date;
log.amount++;
} else {
log = new LogDetail();
log.name = name;
log.date = date;
log.amount = 1;
}
_callTable.put(number, log);
}
}
c.close();
}
}
코드가 좋습니까 ?? 어떤 플랫폼에서 고군분투하고 있습니까? 현재 2.3.5의 –
입니다. – thecr0w