1b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen/* 2b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * Copyright (C) 2013 The Android Open Source Project 3b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * 4b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * you may not use this file except in compliance with the License. 6b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * You may obtain a copy of the License at 7b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * 8b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * http://www.apache.org/licenses/LICENSE-2.0 9b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * 10b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * Unless required by applicable law or agreed to in writing, software 11b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * distributed under the License is distributed on an "AS IS" BASIS, 12b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * See the License for the specific language governing permissions and 14b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * limitations under the License 15b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen */ 16b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen 17b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chenpackage com.android.dialer.calllog; 18b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen 19b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chenimport android.content.ComponentName; 20b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chenimport android.content.Context; 21b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chenimport android.graphics.drawable.Drawable; 229dc924c8bcc0bc8d996452e9ce3215b5f064962eTyler Gunnimport android.telecom.PhoneAccount; 239dc924c8bcc0bc8d996452e9ce3215b5f064962eTyler Gunnimport android.telecom.PhoneAccountHandle; 249dc924c8bcc0bc8d996452e9ce3215b5f064962eTyler Gunnimport android.telecom.TelecomManager; 25b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chenimport android.text.TextUtils; 26b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen 27b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen/** 28b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * Methods to help extract {@code PhoneAccount} information from database and Telecomm sources 29b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen */ 30b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chenpublic class PhoneAccountUtils { 31b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen /** 32b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * Generate account info from data in Telecomm database 33b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen */ 34b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen public static PhoneAccountHandle getAccount(String componentString, 35b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen String accountId) { 36b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen if (TextUtils.isEmpty(componentString) || TextUtils.isEmpty(accountId)) { 37b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen return null; 38b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen } 39b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen final ComponentName componentName = ComponentName.unflattenFromString(componentString); 40b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen return new PhoneAccountHandle(componentName, accountId); 41b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen } 42b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen 43b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen /** 44b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen * Generate account icon from data in Telecomm database 45b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen */ 46b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen public static Drawable getAccountIcon(Context context, PhoneAccountHandle phoneAccount) { 47bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen final PhoneAccount account = getAccountOrNull(context, phoneAccount); 48bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen if (account == null) { 49b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen return null; 50b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen } 51bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen return account.getIcon(context); 52bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen } 53bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen 54bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen /** 55bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen * Generate account label from data in Telecomm database 56bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen */ 571970263aad3e26c0e36dbe3783bef5d9f0ff29f0Nancy Chen public static String getAccountLabel(Context context, PhoneAccountHandle phoneAccount) { 58bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen final PhoneAccount account = getAccountOrNull(context, phoneAccount); 59bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen if (account == null) { 60bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen return null; 61bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen } 621970263aad3e26c0e36dbe3783bef5d9f0ff29f0Nancy Chen return account.getLabel().toString(); 63bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen } 64bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen 65bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen /** 66bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen * Retrieve the account metadata, but if the account does not exist or the device has only a 67bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen * single registered and enabled account, return null. 68bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen */ 69bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen private static PhoneAccount getAccountOrNull(Context context, 70bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen PhoneAccountHandle phoneAccount) { 719dc924c8bcc0bc8d996452e9ce3215b5f064962eTyler Gunn final TelecomManager telecomManager = 729dc924c8bcc0bc8d996452e9ce3215b5f064962eTyler Gunn (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); 739dc924c8bcc0bc8d996452e9ce3215b5f064962eTyler Gunn final PhoneAccount account = telecomManager.getPhoneAccount(phoneAccount); 74fb49f977e59c142aee019fa5aa040e7308e534e0Nancy Chen if (account == null || !telecomManager.hasMultipleCallCapableAccounts()) { 75bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen return null; 76bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen } 77bdfa4df66f6ce1133efa5087d9082c45cc015841Nancy Chen return account; 78b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen } 791970263aad3e26c0e36dbe3783bef5d9f0ff29f0Nancy Chen 80b2eebafbc1f1e26b5178b2858ca335467b4bc341Nancy Chen} 81