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