Skip to main content

Post 6: Xamarin : Displaying the Call Log

Displaying the Call Log


Android Versions: Level 1 and above
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));
            }
 

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"/>

Comments

  1. 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

Post a Comment

Popular posts from this blog

TIME TABLE: VTU BE/B.Tech June/July 2016 Exam Time table Draft Layout

Semester-wise June-July 2016 Exam time table (Draft Layout) Are You Using updated Kwikstudy App?

Walkins Bangalore: 01st-Oct-2016

1. UTC Aerospace : GET – S&IS-Software Team hiring Electronics & CSE / IT Freshers ! Walkin on 1st OCT | BE/BTECH - 2015 & 2016 both batch can try Selection Process : Written Test Group Discussion Technical & HR Interviews How To Apply : It is a walk-in drive for 2016 batch eligible freshers on 1 Oct 2016 at Bangalore location. Interested and eligible candidates can walk-in to the following venue on 1 Oct 2016 Date of Drive : 01 Oct 2016 Reporting Time : 8:00 AM to 11:30 AM Venue : UTC Aerospace Systems – Site 1, Sy. Nos. 14/1 & 15/1, Maruthi Industrial State, Phase 2, Hoody Village, Whitefield Road, K R Puram Hobli, Bangalore – 560048 ______________________________________ 2. HP : Software Eng/ Software Tester (Call based ,less chance of getting entry , try at your own risk) Event Date : 1-October-2016 Event Time : 8 : 00 am Job Location : Bangalore / Chennai Job Description: Software Engineer /

How to get VTU Provisional Degree Certificate (PDC) ?

Here is the procedure to get the Provisional Degree Certificate from the VTU by passed out candidates. You can get the certificate through post by sending the required documents to VTU. Documents and things required: 1. Provisional Degree Certificate (PDC) application form 2. DD of specified fees amount or print copy of receipt if you paid the fees online 3. A letter to the VTU registrar 4. A4 size envelope Step 1: Fill the PDC application You can download the PDC application form from the VTU website. Click below link for application download. PDC application form download     After downloading the application take a print of it and properly fill the form. Step 2: Make a DD of specified amount as the fees of PDC: Go to the bank and make the DD of prescribed fee amount for the PDC. The fee amount is specified in the above link from where you downloaded the application. Make the DD in favor of " Finance Officer, VTU Belgaum ".   Wr