/* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.telecom; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.telecom.Log; /** * Abstracts away dependency on the {@link PackageManager} required to fetch the label for an * app. */ public interface AppLabelProxy { String LOG_TAG = AppLabelProxy.class.getSimpleName(); class Util { /** * Default impl of getAppLabel. * @param pm PackageManager instance * @param packageName package name to look up. */ public static CharSequence getAppLabel(PackageManager pm, String packageName) { try { ApplicationInfo info = pm.getApplicationInfo(packageName, 0); CharSequence result = pm.getApplicationLabel(info); Log.i(LOG_TAG, "package %s: name is %s", packageName, result); return result; } catch (PackageManager.NameNotFoundException nnfe) { Log.w(LOG_TAG, "Could not determine app label. Package name is %s", packageName); } return null; } } CharSequence getAppLabel(String packageName); }