Merge "Prompting the user to set Pixel/Quickstep as default Home app." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
cf3a0ef2f0
@@ -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() { }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user