16f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki/*
26f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Copyright (C) 2016 The Android Open Source Project
36f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki *
46f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Licensed under the Apache License, Version 2.0 (the "License");
56f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * you may not use this file except in compliance with the License.
66f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * You may obtain a copy of the License at
76f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki *
86f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki *      http://www.apache.org/licenses/LICENSE-2.0
96f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki *
106f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Unless required by applicable law or agreed to in writing, software
116f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * distributed under the License is distributed on an "AS IS" BASIS,
126f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * See the License for the specific language governing permissions and
146f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * limitations under the License.
156f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki */
166f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
176f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukipackage android.content.pm;
186f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
196f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.annotation.NonNull;
206f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.annotation.Nullable;
216f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.annotation.UserIdInt;
226f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.content.ComponentName;
236f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.content.Intent;
246f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport android.content.pm.LauncherApps.ShortcutQuery;
255504622fb01ab9774b5e73d05f86ee03a8b68ab7Makoto Onukiimport android.os.ParcelFileDescriptor;
266f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
276f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukiimport java.util.List;
286f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
296f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki/**
306f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Entry points used by {@link LauncherApps}.
316f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki *
326f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * <p>No permission / argument checks will be performed inside.
336f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * Callers must check the calling app permission and the calling package name.
346f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki * @hide
356f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki */
366f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onukipublic abstract class ShortcutServiceInternal {
376f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki    public interface ShortcutChangeListener {
384dbe0ded4ae9faaef580be80184fca0749e27198Makoto Onuki        void onShortcutChanged(@NonNull String packageName, @UserIdInt int userId);
396f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki    }
406f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
416f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki    public abstract List<ShortcutInfo>
42d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            getShortcuts(int launcherUserId,
43d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            @NonNull String callingPackage, long changedSince,
44abe8442951ff88aa01ed882adb54fb1b3472ca3eMakoto Onuki            @Nullable String packageName, @Nullable List<String> shortcutIds,
45abe8442951ff88aa01ed882adb54fb1b3472ca3eMakoto Onuki            @Nullable ComponentName componentName, @ShortcutQuery.QueryFlags int flags,
466f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki            int userId);
476f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
48d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki    public abstract boolean
49d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            isPinnedByCaller(int launcherUserId, @NonNull String callingPackage,
50d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            @NonNull String packageName, @NonNull String id, int userId);
51d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki
52d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki    public abstract void pinShortcuts(int launcherUserId,
53d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            @NonNull String callingPackage, @NonNull String packageName,
546f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki            @NonNull List<String> shortcutIds, int userId);
556f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
56440a1ea8e2204ecb171e0187318beb2f08f6012cMakoto Onuki    public abstract Intent[] createShortcutIntents(
57440a1ea8e2204ecb171e0187318beb2f08f6012cMakoto Onuki            int launcherUserId, @NonNull String callingPackage,
5843204b8357d781f284037fb8b7b7050ed04a2103Makoto Onuki            @NonNull String packageName, @NonNull String shortcutId, int userId);
596f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki
606f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki    public abstract void addListener(@NonNull ShortcutChangeListener listener);
615504622fb01ab9774b5e73d05f86ee03a8b68ab7Makoto Onuki
62d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki    public abstract int getShortcutIconResId(int launcherUserId, @NonNull String callingPackage,
63abe8442951ff88aa01ed882adb54fb1b3472ca3eMakoto Onuki            @NonNull String packageName, @NonNull String shortcutId, int userId);
645504622fb01ab9774b5e73d05f86ee03a8b68ab7Makoto Onuki
65d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki    public abstract ParcelFileDescriptor getShortcutIconFd(int launcherUserId,
66d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            @NonNull String callingPackage,
67abe8442951ff88aa01ed882adb54fb1b3472ca3eMakoto Onuki            @NonNull String packageName, @NonNull String shortcutId, int userId);
682d5b465fa9235e66ec176f6d6ffaaa0c18143e41Makoto Onuki
69d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki    public abstract boolean hasShortcutHostPermission(int launcherUserId,
70d99c6f04bbb68f8be78f2c3ca625a3a8d5645275Makoto Onuki            @NonNull String callingPackage);
716f7362d92573e4ae693bc513dca586d6a4eb087bMakoto Onuki}
72