Anrufdatum und Uhrzeit in Android -App nicht richtig anzeigen [geschlossen]Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Anrufdatum und Uhrzeit in Android -App nicht richtig anzeigen [geschlossen]

Post by Anonymous »

Ich arbeite an einer Android -App, die den Anruf und die SMS -Geschichte eines Kindes verfolgt. Ich verwende Firebase, um die Anrufprotokolle zu speichern, und habe ein Problem mit der Anzeige des richtigen Datums und der richtigen Uhrzeit aufgetreten. Während die anderen Informationen (Anrufnummer, Anruftyp, Dauer) korrekt abgerufen und angezeigt werden, werden Datum und Uhrzeit als "unbekannt" angezeigt.

Code: Select all

public class CallService extends Service {

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
getCallLogs();  // Fetch and upload call logs
return START_STICKY;
}

private void getCallLogs() {
String[] projection = {
CallLog.Calls.NUMBER,
CallLog.Calls.TYPE,
CallLog.Calls.DATE,
CallLog.Calls.DURATION
};

try (Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
int numberIndex = cursor.getColumnIndex(CallLog.Calls.NUMBER);
int typeIndex = cursor.getColumnIndex(CallLog.Calls.TYPE);
int dateIndex = cursor.getColumnIndex(CallLog.Calls.DATE);
int durationIndex = cursor.getColumnIndex(CallLog.Calls.DURATION);

if (numberIndex == -1 || typeIndex == -1 || dateIndex == -1 || durationIndex == -1) {
Log.e("CallService", "One or more columns not found.");
return;
}

do {
String number = cursor.getString(numberIndex);
String type = cursor.getString(typeIndex);
long date = cursor.getLong(dateIndex);  // Date is already a long
String duration = cursor.getString(durationIndex);

// Upload call log to Firebase for the specific child UID
uploadCallLogToFirebase(number, type, date, duration);
} while (cursor.moveToNext());
}
} catch (Exception e) {
Log.e("CallService", "Error reading call logs: " + e.getMessage());
}
}

private void uploadCallLogToFirebase(String number, String type, long date, String duration) {
String childUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("Users/Children/" + childUid + "/CallLogs");

String callId = ref.push().getKey();  // Create unique ID for each call log entry
CallLogEntry entry = new CallLogEntry(number, type, date, duration);  // Passing long for date

if (callId != null) {
ref.child(callId).setValue(entry);  // Upload call log to Firebase
}
}

@Override
public IBinder onBind(Intent intent) {
return null;
}
}
< /code>
In Firebase werden die Protokolle als: < /p>
gespeichert.{
"Users": {
"Children": {
"UID": {
"CallLogs": {
"-OPwYb3T4l1LIkue6daF": {
"date": "1638002747887",
"duration": "0",
"number": "112",
"type": "2"
}
}
}
}
}
}
Das Problem ist, dass das Datum als Zeitstempel gespeichert wird (was gut aussieht). Wenn jedoch die Anrufprotokolle in der App angezeigt werden, wird das Datum eher als "unbekannt" als als korrektes Datum/Uhrzeit angezeigt. Ich bin mir nicht sicher, warum dies geschieht. das Datum nicht richtig angezeigt? Was könnte ich beim Umgang mit dem Datum fehlen oder es für die Anzeige formatieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post