2011-11-03 4 views
1

J'interroge le fournisseur de contenu CallLog.Calls pour les détails d'appel. Je fais quelque chose de ce genreDemande CallLog.Calls par date actuelle

Cursor managedCursor = cr.query(CallLog.Calls.CONTENT_URI, null, 
       null, null, null); 

De cette façon, je reçois tous les journaux d'appels. Mais maintenant je veux interroger par la date actuelle afin que je reçois seulement les journaux d'appels de date actuelle. Comment devrait-on aborder cela?

+1

Je crois que cela a été répondu [ici] (http://stackoverflow.com/questions/5516423/calllog-calls-query-by-date) – Andrei

Répondre

4

Essayez ceci:

//With this method you will get the timestamp of today at midnight 
public long getTodayTimestamp(){ 
    Calendar c1 = Calendar.getInstance(); 
    c1.setTime(new Date()); 

    Calendar c2 = Calendar.getInstance(); 
    c2.set(Calendar.YEAR, c1.get(Calendar.YEAR)); 
    c2.set(Calendar.MONTH, c1.get(Calendar.MONTH)); 
    c2.set(Calendar.DAY_OF_MONTH, c1.get(Calendar.DAY_OF_MONTH)); 
    c2.set(Calendar.HOUR_OF_DAY, 0); 
    c2.set(Calendar.MINUTE, 0); 
    c2.set(Calendar.SECOND, 0); 

    return c2.getTimeInMillis(); 
} 

String timestap = String.valueOf(getTodayTimestamp()); 

Cursor managedCursor = cr.query(CallLog.Calls.CONTENT_URI, CallLog.Calls.DATE + ">= ?", new String[]{timestamp}, null); 
+0

J'ai essayé cette solution et cela a fonctionné mais la requête devrait être Cursor managedCursor = cr.query (CallLog.Calls.CONTENT_URI, null, CallLog.Calls.DATE + "> =?", nouvelle chaîne [] {timestamp}, null); – ASH

+0

Désolé, j'ai écrit le code mais je ne l'ai pas testé donc il y a un paramètre plus que ceux acceptés :) – rciovati

+0

Aussi le format d'heure devrait être de la forme c2.set (Calendar.HOUR_OF_DAY, 0); pour supporter le format 24 heures. – ASH

Questions connexes