Displaying the Call Log
Android Versions: Level 1 and above
Permissions: android.permission.READ_CONTACTS
Permissions: android.permission.READ_CONTACTS
All the call activities on your phone
are logged in the call_log content provider. Therefore, if you want
details about all the incoming, outgoing, or missed calls, you can query
the content provider to get them. This post shows you how easy it is.
To get the call log details, query the
call_log content provider, iterating through the results by using a
Cursor object. The following code snippet retrieves all the call details
and sorts them by date. It then prints out the details of each call —
ID, phone number, date of call and type of call
public void GetCallLogs(){
// filter call logs by type = missed
// string queryFilter = String.Format ("{0}={1}", CallLog.Calls.Type, (int)CallType.Missed);
// filter in desc order limit by 3
// string querySorter = String.Format ("{0} desc limit 3", CallLog.Calls.Date);
// filter in desc order limit by no
string querySorter = String.Format ("{0} desc ", CallLog.Calls.Date);
// CallLog.Calls.ContentUri is the path where data is saved
Android.Database.ICursor queryData = ContentResolver.Query (CallLog.Calls.ContentUri, null, null, null, querySorter);
while(queryData.MoveToNext())
{
//---phone number---
string callNumber = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Number));
//---date of call---
string callDate = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Date));
//---1-incoming; 2-outgoing; 3-missed---
String callType = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Type));
}
}
For Getting only Missed Call logs:
public void GetCallLogs(){
// filter call logs by type = missed
string queryFilter = String.Format ("{0}={1}", CallLog.Calls.Type, (int)CallType.Missed);
// filter in desc order limit by 3
// string querySorter = String.Format ("{0} desc limit 3", CallLog.Calls.Date);
// filter in desc order limit by no
string querySorter = String.Format ("{0} desc ", CallLog.Calls.Date);
// CallLog.Calls.ContentUri is the path where data is saved
Android.Database.ICursor queryData = ContentResolver.Query (CallLog.Calls.ContentUri, null, queryFilter, null, querySorter);
while(queryData.MoveToNext())
{
//---phone number---
string callNumber = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Number));
//---date of call---
string callDate = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Date));
//---1-incoming; 2-outgoing; 3-missed---
String callType = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Type));
}
public void GetCallLogs(){
// filter call logs by type = missed
string queryFilter = String.Format ("{0}={1}", CallLog.Calls.Type, (int)CallType.Missed);
// filter in desc order limit by 3
// string querySorter = String.Format ("{0} desc limit 3", CallLog.Calls.Date);
// filter in desc order limit by no
string querySorter = String.Format ("{0} desc ", CallLog.Calls.Date);
// CallLog.Calls.ContentUri is the path where data is saved
Android.Database.ICursor queryData = ContentResolver.Query (CallLog.Calls.ContentUri, null, queryFilter, null, querySorter);
while(queryData.MoveToNext())
{
//---phone number---
string callNumber = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Number));
//---date of call---
string callDate = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Date));
//---1-incoming; 2-outgoing; 3-missed---
String callType = queryData.GetString(queryData.GetColumnIndex(CallLog.Calls.Type));
}
For Getting only Incoming Call logs:
string queryFilter = String.Format ("{0}={1}", CallLog.Calls.Type, (int)CallType.Incoming);
For Getting only outcoming Call logs:
string queryFilter = String.Format ("{0}={1}", CallLog.Calls.Type, (int)CallType.Outgoing);
In the preceding code snippet, you check for missed calls that have not been acknowledged (i.e., that you have not called back) and print out their phone numbers.
In order to query the call_log content provider, you need to add the READ_CONTACTS permission to the AndroidManifest.xml file:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
Hey .. I have very similar code .. How do you recieve the date time .. I get one hell of a long number that does not resemble any datetime format I can see
ReplyDelete