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