1 package com.android.launcher3;
3 import android.content.ComponentName;
4 import android.content.Intent;
5 import android.graphics.Rect;
6 import android.os.Bundle;
7 import android.view.Menu;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import com.android.launcher3.allapps.AllAppsSearchBarController;
11 import com.android.launcher3.util.ComponentKey;
13 import java.io.FileDescriptor;
14 import java.io.PrintWriter;
15 import java.util.ArrayList;
16 import java.util.List;
19 * LauncherCallbacks is an interface used to extend the Launcher activity. It includes many hooks
20 * in order to add additional functionality. Some of these are very general, and give extending
21 * classes the ability to react to Activity life-cycle or specific user interactions. Others
22 * are more specific and relate to replacing parts of the application, for example, the search
23 * interface or the wallpaper picker.
25 public interface LauncherCallbacks {
28 * Activity life-cycle methods. These methods are triggered after
29 * the code in the corresponding Launcher method is executed.
31 public void preOnCreate();
32 public void onCreate(Bundle savedInstanceState);
33 public void preOnResume();
34 public void onResume();
35 public void onStart();
37 public void onPause();
38 public void onDestroy();
39 public void onSaveInstanceState(Bundle outState);
40 public void onPostCreate(Bundle savedInstanceState);
41 public void onNewIntent(Intent intent);
42 public void onActivityResult(int requestCode, int resultCode, Intent data);
43 public void onRequestPermissionsResult(int requestCode, String[] permissions,
45 public void onWindowFocusChanged(boolean hasFocus);
46 public boolean onPrepareOptionsMenu(Menu menu);
47 public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args);
48 public void onHomeIntent();
49 public boolean handleBackPressed();
50 public void onTrimMemory(int level);
53 * Extension points for providing custom behavior on certain user interactions.
55 public void onLauncherProviderChange();
56 public void finishBindingItems(final boolean upgradePath);
57 public void onClickAllAppsButton(View v);
58 public void bindAllApplications(ArrayList<AppInfo> apps);
59 public void onClickFolderIcon(View v);
60 public void onClickAppShortcut(View v);
62 public void onClickPagedViewIcon(View v);
63 public void onClickWallpaperPicker(View v);
64 public void onClickSettingsButton(View v);
65 public void onClickAddWidgetButton(View v);
66 public void onPageSwitch(View newPage, int newPageIndex);
67 public void onWorkspaceLockedChanged();
68 public void onDragStarted(View view);
69 public void onInteractionBegin();
70 public void onInteractionEnd();
73 * Extension points for replacing the search experience
76 public boolean forceDisableVoiceButtonProxy();
77 public boolean providesSearch();
78 public boolean startSearch(String initialQuery, boolean selectInitialQuery,
79 Bundle appSearchData, Rect sourceBounds);
81 public boolean startSearchFromAllApps(String query);
83 public void startVoice();
84 public boolean hasCustomContentToLeft();
85 public void populateCustomContentContainer();
86 public View getQsbBar();
87 public Bundle getAdditionalSearchWidgetOptions();
90 * Extensions points for adding / replacing some other aspects of the Launcher experience.
92 public Intent getFirstRunActivity();
93 public boolean hasFirstRunActivity();
94 public boolean hasDismissableIntroScreen();
95 public View getIntroScreen();
96 public boolean shouldMoveToDefaultScreenOnHomeIntent();
97 public boolean hasSettings();
99 public ComponentName getWallpaperPickerComponent();
100 public boolean overrideWallpaperDimensions();
101 public boolean isLauncherPreinstalled();
102 public AllAppsSearchBarController getAllAppsSearchBarController();
103 public List<ComponentKey> getPredictedApps();
104 public static final int SEARCH_BAR_HEIGHT_NORMAL = 0, SEARCH_BAR_HEIGHT_TALL = 1;
105 /** Must return one of {@link #SEARCH_BAR_HEIGHT_NORMAL} or {@link #SEARCH_BAR_HEIGHT_TALL} */
106 public int getSearchBarHeight();
109 * Returning true will immediately result in a call to {@link #setLauncherOverlayView(ViewGroup,
110 * com.android.launcher3.Launcher.LauncherOverlayCallbacks)}.
112 * @return true if this launcher extension will provide an overlay
114 public boolean hasLauncherOverlay();
117 * Handshake to establish an overlay relationship
119 * @param container Full screen overlay ViewGroup into which custom views can be placed.
120 * @param callbacks A set of callbacks provided by Launcher in relation to the overlay
121 * @return an interface used to make requests and notify the Launcher in relation to the overlay
123 public Launcher.LauncherOverlay setLauncherOverlayView(InsettableFrameLayout container,
124 Launcher.LauncherOverlayCallbacks callbacks);
127 * Sets the callbacks to allow reacting the actions of search overlays of the launcher.
129 * @param callbacks A set of callbacks to the Launcher, is actually a LauncherSearchCallback,
130 * but for implementation purposes is passed around as an object.
132 public void setLauncherSearchCallback(Object callbacks);