Merge "Get rid of setInteractionHandler call to the host in launcher" into tm-qpr-dev

This commit is contained in:
Sihua Ma
2022-10-25 02:44:16 +00:00
committed by Android (Google) Code Review
5 changed files with 63 additions and 4 deletions

View File

@@ -17,10 +17,18 @@
package com.android.launcher3.uioverrides;
import android.app.Person;
import android.appwidget.AppWidgetHost;
import android.content.pm.ShortcutInfo;
import com.android.launcher3.Utilities;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.Utilities;
import com.android.launcher3.widget.LauncherAppWidgetHost;
/**
* A wrapper for the hidden API calls
*/
public class ApiWrapper {
public static final boolean TASKBAR_DRAWN_IN_PROCESS = true;
@@ -29,4 +37,14 @@ public class ApiWrapper {
Person[] persons = si.getPersons();
return persons == null ? Utilities.EMPTY_PERSON_ARRAY : persons;
}
/**
* Set the interaction handler for the host
* @param host AppWidgetHost that needs the interaction handler
* @param handler InteractionHandler for the views in the host
*/
public static void setHostInteractionHandler(@NonNull AppWidgetHost host,
@Nullable LauncherAppWidgetHost.LauncherWidgetInteractionHandler handler) {
host.setInteractionHandler(handler::onInteraction);
}
}

View File

@@ -33,10 +33,12 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.util.ActivityOptionsWrapper;
import com.android.launcher3.widget.LauncherAppWidgetHost;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
/** Provides a Quickstep specific animation when launching an activity from an app widget. */
class QuickstepInteractionHandler implements RemoteViews.InteractionHandler {
class QuickstepInteractionHandler implements
LauncherAppWidgetHost.LauncherWidgetInteractionHandler {
private static final String TAG = "QuickstepInteractionHandler";

View File

@@ -490,7 +490,8 @@ public class QuickstepLauncher extends Launcher {
protected LauncherAppWidgetHost createAppWidgetHost() {
LauncherAppWidgetHost appWidgetHost = super.createAppWidgetHost();
appWidgetHost.setInteractionHandler(new QuickstepInteractionHandler(this));
ApiWrapper.setHostInteractionHandler(appWidgetHost,
new QuickstepInteractionHandler(this));
return appWidgetHost;
}

View File

@@ -18,6 +18,7 @@ package com.android.launcher3.widget;
import static android.app.Activity.RESULT_CANCELED;
import android.app.PendingIntent;
import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetManager;
@@ -28,6 +29,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.SparseArray;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.Toast;
@@ -80,6 +82,24 @@ public class LauncherAppWidgetHost extends AppWidgetHost {
private IntConsumer mAppWidgetRemovedCallback = null;
/**
* This serves for the purpose of getting rid of the hidden API calling of InteractionHandler
*/
public interface LauncherWidgetInteractionHandler {
/**
* Invoked when the user performs an interaction on the View.
*
* @param view the View with which the user interacted
* @param pendingIntent the base PendingIntent associated with the view
* @param response the response to the interaction, which knows how to fill in the
* attached PendingIntent
*/
boolean onInteraction(
View view,
PendingIntent pendingIntent,
RemoteViews.RemoteResponse response);
}
public LauncherAppWidgetHost(Context context) {
this(context, null);
}

View File

@@ -17,10 +17,18 @@
package com.android.launcher3.uioverrides;
import android.app.Person;
import android.appwidget.AppWidgetHost;
import android.content.pm.ShortcutInfo;
import com.android.launcher3.Utilities;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.launcher3.Utilities;
import com.android.launcher3.widget.LauncherAppWidgetHost;
/**
* A wrapper for the hidden API calls
*/
public class ApiWrapper {
public static final boolean TASKBAR_DRAWN_IN_PROCESS = false;
@@ -28,4 +36,14 @@ public class ApiWrapper {
public static Person[] getPersons(ShortcutInfo si) {
return Utilities.EMPTY_PERSON_ARRAY;
}
/**
* Set the interaction handler for the host
* @param host AppWidgetHost that needs the interaction handler
* @param handler InteractionHandler for the views in the host
*/
public static void setHostInteractionHandler(@NonNull AppWidgetHost host,
@Nullable LauncherAppWidgetHost.LauncherWidgetInteractionHandler handler) {
// No-op
}
}