Merge "Prompting the user to set Pixel/Quickstep as default Home app." into main

This commit is contained in:
Himanshu Gupta
2024-06-12 21:13:19 +00:00
committed by Android (Google) Code Review
7 changed files with 113 additions and 7 deletions
+13
View File
@@ -38,6 +38,7 @@ import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_BIND
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_BIND_PENDING_APPWIDGET;
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_CREATE_APPWIDGET;
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_CREATE_SHORTCUT;
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_HOME_ROLE;
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_PICK_APPWIDGET;
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_RECONFIGURE_APPWIDGET;
import static com.android.launcher3.LauncherConstants.SavedInstanceKeys.RUNTIME_STATE;
@@ -151,6 +152,7 @@ import android.view.WindowInsetsAnimation;
import android.view.WindowManager.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.OvershootInterpolator;
import android.widget.Toast;
import android.window.BackEvent;
import android.window.OnBackAnimationCallback;
@@ -892,6 +894,17 @@ public class Launcher extends StatefulActivity<LauncherState>
}
mPendingActivityResult = null;
if (requestCode == REQUEST_HOME_ROLE) {
if (resultCode != RESULT_OK) {
Toast.makeText(
this,
this.getString(R.string.set_default_home_app,
this.getString(R.string.derived_app_name)),
Toast.LENGTH_LONG).show();
}
return;
}
// Reset the startActivity waiting flag
final PendingRequestArgs requestArgs = mPendingRequestArgs;
setWaitingForResult(null);
@@ -41,6 +41,7 @@ public class LauncherConstants {
public static final int REQUEST_BIND_PENDING_APPWIDGET = 12;
public static final int REQUEST_RECONFIGURE_APPWIDGET = 13;
public static final int REQUEST_HOME_ROLE = 14;
static final int REQUEST_CREATE_SHORTCUT = 1;
static final int REQUEST_CREATE_APPWIDGET = 5;
static final int REQUEST_PICK_APPWIDGET = 9;
@@ -281,10 +281,28 @@ public class PrivateProfileManager extends UserProfileManager {
@Override
public void setQuietMode(boolean enable) {
super.setQuietMode(enable);
UI_HELPER_EXECUTOR.post(() ->
mUserCache.getUserProfiles()
.stream()
.filter(getUserMatcher())
.findFirst()
.ifPresent(userHandle -> setQuietModeSafely(enable, userHandle)));
mReadyToAnimate = true;
}
/**
* Sets Quiet Mode for Private Profile.
* If {@link SecurityException} is thrown, prompts the user to set this launcher as HOME app.
*/
private void setQuietModeSafely(boolean enable, UserHandle userHandle) {
try {
mUserManager.requestQuietModeEnabled(enable, userHandle);
} catch (SecurityException ex) {
ApiWrapper.INSTANCE.get(mAllApps.mActivityContext)
.assignDefaultHomeRole(mAllApps.mActivityContext);
}
}
/**
* Expand the private space after the app list has been added and updated from
* {@link AlphabeticalAppsList#onAppsUpdated()}
@@ -55,12 +55,11 @@ public abstract class UserProfileManager {
public @interface UserProfileState { }
protected final StatsLogManager mStatsLogManager;
protected final UserManager mUserManager;
protected final UserCache mUserCache;
@UserProfileState
private int mCurrentState;
private final UserManager mUserManager;
private final UserCache mUserCache;
protected UserProfileManager(UserManager userManager,
StatsLogManager statsLogManager,
UserCache userCache) {
@@ -16,10 +16,12 @@
package com.android.launcher3.util;
import static com.android.launcher3.LauncherConstants.ActivityCodes.REQUEST_HOME_ROLE;
import static com.android.launcher3.util.MainThreadInitializedObject.forOverride;
import android.app.ActivityOptions;
import android.app.Person;
import android.app.role.RoleManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherActivityInfo;
@@ -33,6 +35,7 @@ import android.util.ArrayMap;
import androidx.annotation.Nullable;
import com.android.launcher3.BuildConfig;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
@@ -136,6 +139,23 @@ public class ApiWrapper implements ResourceBasedOverride, SafeCloseable {
return false;
}
/**
* Starts an Activity which can be used to set this Launcher as the HOME app, via a consent
* screen. In case the consent screen cannot be shown, or the user does not set current Launcher
* as HOME app, a toast asking the user to do the latter is shown.
*/
public void assignDefaultHomeRole(Context context) {
RoleManager roleManager = context.getSystemService(RoleManager.class);
assert roleManager != null;
if (roleManager.isRoleAvailable(RoleManager.ROLE_HOME)
&& !roleManager.isRoleHeld(RoleManager.ROLE_HOME)) {
Intent roleRequestIntent = roleManager.createRequestRoleIntent(
RoleManager.ROLE_HOME);
Launcher launcher = Launcher.getLauncher(context);
launcher.startActivityForResult(roleRequestIntent, REQUEST_HOME_ROLE);
}
}
@Override
public void close() { }