Ich verwende den folgenden Code, um die letzten Anrufdetails aus der Anrufliste abzurufen.Letzte Anrufdetails aus Anrufliste abrufen
public static CallDetails getLastCallDetails(Context context) {
CallDetails callDetails = new CallDetails();
Uri contacts = CallLog.Calls.CONTENT_URI;
try {
Cursor managedCursor = context.getContentResolver().query(contacts, null, null, null, android.provider.CallLog.Calls.DATE + " DESC limit 1;");
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int incomingtype = managedCursor.getColumnIndex(String.valueOf(CallLog.Calls.INCOMING_TYPE));
while (managedCursor.moveToNext()) {
String callType;
String phNumber = managedCursor.getString(number);
String callerName = getContactName(context, phNumber);
if(incomingtype == -1){
callType = "incoming";
}
else {
callType = "outgoing";
}
String callDate = managedCursor.getString(date);
String callDayTime = new Date(Long.valueOf(callDate)).toString();
String callDuration = managedCursor.getString(duration);
callDetails.setCallerName(callerName);
callDetails.setCallerNumber(phNumber);
callDetails.setCallDuration(callDuration);
callDetails.setCallType(callType);
callDetails.setCallTimeStamp(callDayTime);
}
managedCursor.close();
} catch (SecurityException e) {
Log.e("Security Exception", "User denied call log permission");
}
return callDetails;
}
Das Problem ist, dass es den letzten zweiten Anruf und nicht den letzten Anruf zurückgibt. Ich muss den letzten Anruf zurückgeben. Ich habe es gegoogelt, aber ich bin nicht in der Lage, die perfekte Lösung zu finden. Bitte helfen Sie. Danke im Voraus.
versuchen, diese in ** um von ** Feld 'CallLog.Calls.DEFAULT_SORT_ORDER + "LIMIT 1"' –
@aksacha Noch immer letzter Sekunde Anruf :( –
'managedCursor .moveToFirst' fehlt –