Home | History | Annotate | Download | only in presence
      1 /*
      2  * Copyright (c) 2015, Motorola Mobility LLC
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions are met:
      7  *     - Redistributions of source code must retain the above copyright
      8  *       notice, this list of conditions and the following disclaimer.
      9  *     - Redistributions in binary form must reproduce the above copyright
     10  *       notice, this list of conditions and the following disclaimer in the
     11  *       documentation and/or other materials provided with the distribution.
     12  *     - Neither the name of Motorola Mobility nor the
     13  *       names of its contributors may be used to endorse or promote products
     14  *       derived from this software without specific prior written permission.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     18  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MOTOROLA MOBILITY LLC BE LIABLE
     20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
     26  * DAMAGE.
     27  */
     28 
     29 package com.android.service.ims.presence;
     30 
     31 import android.accounts.Account;
     32 import android.content.ContentResolver;
     33 import android.content.ContentUris;
     34 import android.content.ContentValues;
     35 import android.content.Context;
     36 import android.database.Cursor;
     37 import android.net.Uri;
     38 import android.provider.ContactsContract.Groups;
     39 
     40 import android.provider.ContactsContract;
     41 import android.provider.ContactsContract.CommonDataKinds.Phone;
     42 
     43 import com.android.ims.internal.EABContract;
     44 import com.android.ims.internal.Logger;
     45 
     46 public class ContactDbUtil {
     47     private static Logger logger = Logger.getLogger("ContactDbUtil");
     48 
     49     public static int resetVtCapability(ContentResolver resolver) {
     50         if(resolver == null) {
     51             logger.error("resetVtCapability, resolver = null");
     52             return 0;
     53         }
     54 
     55         String selection = ContactsContract.Data.MIMETYPE + " = '" + Phone.CONTENT_ITEM_TYPE + "'";
     56 
     57         ContentValues values = new ContentValues();
     58         values.put(ContactsContract.Data.CARRIER_PRESENCE, 0); // reset all.
     59         int count = resolver.update(ContactsContract.Data.CONTENT_URI, values, selection, null);
     60         logger.debug("resetVtCapability count=" + count);
     61         return count;
     62     }
     63 
     64     public static int updateVtCapability(ContentResolver resolver, long dataId, boolean enable) {
     65         if(resolver == null) {
     66             logger.error("resetVtCapability, resolver = null");
     67             return 0;
     68         }
     69 
     70         String selection = ContactsContract.Data.MIMETYPE + " = '" + Phone.CONTENT_ITEM_TYPE
     71                 + "' and " + ContactsContract.Data._ID + "= '" + dataId + "'";
     72 
     73         int oldValue = 0;
     74         final Cursor cursor = resolver.query(ContactsContract.Data.CONTENT_URI,
     75                 new String[] { ContactsContract.Data._ID, ContactsContract.Data.CARRIER_PRESENCE },
     76                 selection, null, null);
     77         if (cursor != null) {
     78             try {
     79                 if (cursor.moveToFirst()) {
     80                     oldValue = cursor.getInt(1);
     81                 }
     82             } finally {
     83                 cursor.close();
     84             }
     85         }
     86 
     87 
     88         ContentValues values = new ContentValues();
     89         values.put(ContactsContract.Data.CARRIER_PRESENCE,
     90                 enable?(oldValue | ContactsContract.Data.CARRIER_PRESENCE_VT_CAPABLE):
     91                 (oldValue & ~ContactsContract.Data.CARRIER_PRESENCE_VT_CAPABLE));
     92         int count = resolver.update(ContactsContract.Data.CONTENT_URI, values, selection, null);
     93         logger.debug("resetVtCapability count=" + count);
     94         return count;
     95     }
     96 }
     97