1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.wallpaper.module; 17 18 import androidx.annotation.IntDef; 19 20 21 /** 22 * Provides updates on the status of packages (installed, updated, removed). 23 * Abstraction layer above Android's LauncherApps. 24 */ 25 public interface PackageStatusNotifier { 26 27 /** 28 * Possible app statuses. 29 */ 30 @IntDef({ 31 PackageStatus.ADDED, 32 PackageStatus.CHANGED, 33 PackageStatus.REMOVED 34 }) 35 @interface PackageStatus { 36 int ADDED = 1; 37 int CHANGED = 2; 38 int REMOVED = 3; 39 } 40 41 /** 42 * Interface to be notified when there's a package event. 43 */ 44 interface Listener { 45 /** 46 * Called when a package status' change. 47 * @param packageName name of the package that changed 48 * @param status the new {@link PackageStatus} for that package 49 */ onPackageChanged(String packageName, @PackageStatus int status)50 void onPackageChanged(String packageName, @PackageStatus int status); 51 } 52 53 /** 54 * Add a {@link Listener} to be notified of package events. Only packages that declare an 55 * Activity or Service responding to that Intent Action will trigger the Listener's callback, 56 * except for the case of PackageStatus#REMOVED which will be triggered for any removed package 57 * (since it will trigger after the package has been already removed) 58 * @param listener Callback to be notified of changes 59 * @param action Intent action to filter packages to be notified about 60 * (except for REMOVED status) 61 */ addListener(Listener listener, String action)62 void addListener(Listener listener, String action); 63 64 /** 65 * Unregister the given listener. 66 */ removeListener(Listener listener)67 void removeListener(Listener listener); 68 } 69