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