1ed13187a745866483139e2878037e1f8427ce567Kenny Guy/* 2ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Copyright (C) 2014 The Android Open Source Project 3ed13187a745866483139e2878037e1f8427ce567Kenny Guy * 4ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5ed13187a745866483139e2878037e1f8427ce567Kenny Guy * you may not use this file except in compliance with the License. 6ed13187a745866483139e2878037e1f8427ce567Kenny Guy * You may obtain a copy of the License at 7ed13187a745866483139e2878037e1f8427ce567Kenny Guy * 8ed13187a745866483139e2878037e1f8427ce567Kenny Guy * http://www.apache.org/licenses/LICENSE-2.0 9ed13187a745866483139e2878037e1f8427ce567Kenny Guy * 10ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Unless required by applicable law or agreed to in writing, software 11ed13187a745866483139e2878037e1f8427ce567Kenny Guy * distributed under the License is distributed on an "AS IS" BASIS, 12ed13187a745866483139e2878037e1f8427ce567Kenny Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ed13187a745866483139e2878037e1f8427ce567Kenny Guy * See the License for the specific language governing permissions and 14ed13187a745866483139e2878037e1f8427ce567Kenny Guy * limitations under the License. 15ed13187a745866483139e2878037e1f8427ce567Kenny Guy */ 16ed13187a745866483139e2878037e1f8427ce567Kenny Guy 17ed13187a745866483139e2878037e1f8427ce567Kenny Guypackage com.android.launcher3.compat; 18ed13187a745866483139e2878037e1f8427ce567Kenny Guy 19ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.content.ComponentName; 20ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.content.Context; 21ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.content.Intent; 223ff9047221820a01c6510503466f8c78b43fdc6dCharles Heimport android.content.pm.ApplicationInfo; 233e9be43b6ea75c8b82b57aa58508a0c3e8e1d721Sunny Goyalimport android.content.pm.LauncherActivityInfo; 24ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.graphics.Rect; 25ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.os.Bundle; 267c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyalimport android.os.UserHandle; 27dec3a908bfa395095e80e4a532cff98612b624deSunny Goyalimport android.support.annotation.Nullable; 28782f0c9a896db58aeaa60d15f291831b8d7b4c93Sunny Goyalimport com.android.launcher3.Utilities; 29bfbf7f9f4a0b300613f0ff27a4eb592d88c08325Tony Wickhamimport com.android.launcher3.shortcuts.ShortcutInfoCompat; 3086222d23e28a09a7a26e7a0d4b4830ded2efb384Tony Wickhamimport com.android.launcher3.util.PackageUserKey; 31ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.List; 32ed13187a745866483139e2878037e1f8427ce567Kenny Guy 33ed13187a745866483139e2878037e1f8427ce567Kenny Guypublic abstract class LauncherAppsCompat { 34ed13187a745866483139e2878037e1f8427ce567Kenny Guy 35c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy public interface OnAppsChangedCallbackCompat { 367c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackageRemoved(String packageName, UserHandle user); 377c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackageAdded(String packageName, UserHandle user); 387c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackageChanged(String packageName, UserHandle user); 397c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackagesAvailable(String[] packageNames, UserHandle user, boolean replacing); 407c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackagesUnavailable(String[] packageNames, UserHandle user, boolean replacing); 417c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackagesSuspended(String[] packageNames, UserHandle user); 427c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal void onPackagesUnsuspended(String[] packageNames, UserHandle user); 43bfbf7f9f4a0b300613f0ff27a4eb592d88c08325Tony Wickham void onShortcutsChanged(String packageName, List<ShortcutInfoCompat> shortcuts, 447c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal UserHandle user); 45ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 46ed13187a745866483139e2878037e1f8427ce567Kenny Guy 47ed13187a745866483139e2878037e1f8427ce567Kenny Guy protected LauncherAppsCompat() { 48ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 49ed13187a745866483139e2878037e1f8427ce567Kenny Guy 50c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy private static LauncherAppsCompat sInstance; 51bf3366f0d9d5f3c99907cc3f74d41b3ec628dcd4Rajeev Kumar private static final Object sInstanceLock = new Object(); 52c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy 53ed13187a745866483139e2878037e1f8427ce567Kenny Guy public static LauncherAppsCompat getInstance(Context context) { 54c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy synchronized (sInstanceLock) { 55c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy if (sInstance == null) { 56e24cb63b811e2885a69e7df794e9972cdf5a57b9Hyunyoung Song if (Utilities.ATLEAST_OREO) { 57782f0c9a896db58aeaa60d15f291831b8d7b4c93Sunny Goyal sInstance = new LauncherAppsCompatVO(context.getApplicationContext()); 58782f0c9a896db58aeaa60d15f291831b8d7b4c93Sunny Goyal } else { 59782f0c9a896db58aeaa60d15f291831b8d7b4c93Sunny Goyal sInstance = new LauncherAppsCompatVL(context.getApplicationContext()); 60782f0c9a896db58aeaa60d15f291831b8d7b4c93Sunny Goyal } 61ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 62c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy return sInstance; 63ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 64ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 65ed13187a745866483139e2878037e1f8427ce567Kenny Guy 663e9be43b6ea75c8b82b57aa58508a0c3e8e1d721Sunny Goyal public abstract List<LauncherActivityInfo> getActivityList(String packageName, 677c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal UserHandle user); 683e9be43b6ea75c8b82b57aa58508a0c3e8e1d721Sunny Goyal public abstract LauncherActivityInfo resolveActivity(Intent intent, 697c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal UserHandle user); 707c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal public abstract void startActivityForProfile(ComponentName component, UserHandle user, 71c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy Rect sourceBounds, Bundle opts); 72ad2e91a216edae0f25bce83a2b058c81953981afSunny Goyal public abstract ApplicationInfo getApplicationInfo( 73ad2e91a216edae0f25bce83a2b058c81953981afSunny Goyal String packageName, int flags, UserHandle user); 74e3c59256794448c67e01333a9f5036559b1bd502Tony public abstract void showAppDetailsForProfile(ComponentName component, UserHandle user, 75e3c59256794448c67e01333a9f5036559b1bd502Tony Rect sourceBounds, Bundle opts); 76c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy public abstract void addOnAppsChangedCallback(OnAppsChangedCallbackCompat listener); 77c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy public abstract void removeOnAppsChangedCallback(OnAppsChangedCallbackCompat listener); 787c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal public abstract boolean isPackageEnabledForProfile(String packageName, UserHandle user); 79ed13187a745866483139e2878037e1f8427ce567Kenny Guy public abstract boolean isActivityEnabledForProfile(ComponentName component, 807c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal UserHandle user); 8186222d23e28a09a7a26e7a0d4b4830ded2efb384Tony Wickham public abstract List<ShortcutConfigActivityInfo> getCustomShortcutActivityList( 8286222d23e28a09a7a26e7a0d4b4830ded2efb384Tony Wickham @Nullable PackageUserKey packageUser); 83dec3a908bfa395095e80e4a532cff98612b624deSunny Goyal 84e3c59256794448c67e01333a9f5036559b1bd502Tony public void showAppDetailsForProfile(ComponentName component, UserHandle user) { 85e3c59256794448c67e01333a9f5036559b1bd502Tony showAppDetailsForProfile(component, user, null, null); 86e3c59256794448c67e01333a9f5036559b1bd502Tony } 8744cba696386b44f9115cad13ec9ecf67a0ac9119Kenny Guy} 88