Move force stop button back out of options menu

In ag/3485781 we moved the force stop button up into the options
menu, but it turns out we didn't actually want to do that. This
CL reverts that change.

Bug: 72948647
Test: make RunSettingsRoboTests
Change-Id: Id687dbde378dc9d95d88a9c188762094d05b6561
This commit is contained in:
Antony Sargent
2018-03-01 10:37:41 -08:00
parent 46d6ecc2b1
commit b513ca9303
6 changed files with 184 additions and 437 deletions

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.appinfo;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
@@ -44,16 +45,20 @@ import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.DeviceAdminAdd;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.EntityHeaderController;
import com.android.settings.widget.PreferenceCategoryController;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
import com.android.settingslib.RestrictedLockUtils;
@@ -85,8 +90,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
// Menu identifiers
@VisibleForTesting static final int UNINSTALL_ALL_USERS_MENU = 1;
@VisibleForTesting static final int UNINSTALL_UPDATES = 2;
static final int FORCE_STOP_MENU = 3;
static final int INSTALL_INSTANT_APP_MENU = 4;
static final int INSTALL_INSTANT_APP_MENU = 3;
// Result code identifiers
@VisibleForTesting
@@ -101,7 +105,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
// Dialog identifiers used in showDialog
private static final int DLG_BASE = 0;
static final int DLG_FORCE_STOP = DLG_BASE + 1;
private static final int DLG_FORCE_STOP = DLG_BASE + 1;
private static final int DLG_DISABLE = DLG_BASE + 2;
private static final int DLG_SPECIAL_DISABLE = DLG_BASE + 3;
static final int DLG_CLEAR_INSTANT_APP = DLG_BASE + 4;
@@ -140,7 +144,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
private InstantAppButtonsPreferenceController mInstantAppButtonPreferenceController;
private AppActionButtonPreferenceController mAppActionButtonPreferenceController;
private ForceStopOptionsMenuController mForceStopOptionsMenuController;
/**
* Callback to invoke when app info has been changed.
@@ -171,9 +174,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
startListeningToPackageRemove();
mForceStopOptionsMenuController =
new ForceStopOptionsMenuController(activity, this /* parent */, mDpm,
mMetricsFeatureProvider, getLifecycle());
setHasOptionsMenu(true);
}
@@ -285,10 +285,6 @@ public class AppInfoDashboardFragment extends DashboardFragment
return mPackageInfo;
}
ApplicationsState getAppState() {
return mState;
}
@Override
public void onPackageSizeChanged(String packageName) {
if (!TextUtils.equals(packageName, mPackageName)) {
@@ -488,10 +484,18 @@ public class AppInfoDashboardFragment extends DashboardFragment
})
.setNegativeButton(R.string.dlg_cancel, null)
.create();
}
final AlertDialog dialog = mForceStopOptionsMenuController.createDialog(id);
if (dialog != null) {
return dialog;
case DLG_FORCE_STOP:
return new AlertDialog.Builder(getActivity())
.setTitle(getActivity().getText(R.string.force_stop_dlg_title))
.setMessage(getActivity().getText(R.string.force_stop_dlg_text))
.setPositiveButton(R.string.dlg_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Force stop
forceStopPackage(mAppEntry.info.packageName);
}
})
.setNegativeButton(R.string.dlg_cancel, null)
.create();
}
return mInstantAppButtonPreferenceController.createDialog(id);
}
@@ -508,6 +512,21 @@ public class AppInfoDashboardFragment extends DashboardFragment
mDisableAfterUninstall = andDisable;
}
private void forceStopPackage(String pkgName) {
mMetricsFeatureProvider.action(getContext(), MetricsEvent.ACTION_APP_FORCE_STOP, pkgName);
final ActivityManager am = (ActivityManager) getActivity().getSystemService(
Context.ACTIVITY_SERVICE);
Log.d(TAG, "Stopping package " + pkgName);
am.forceStopPackage(pkgName);
final int userId = UserHandle.getUserId(mAppEntry.info.uid);
mState.invalidatePackage(pkgName, userId);
final AppEntry newEnt = mState.getEntry(pkgName, userId);
if (newEnt != null) {
mAppEntry = newEnt;
}
mAppActionButtonPreferenceController.checkForceStop(mAppEntry, mPackageInfo);
}
public static void startAppInfoFragment(Class<?> fragment, int title, Bundle args,
SettingsPreferenceFragment caller, AppEntry appEntry) {
// start new fragment to display extended information
@@ -573,6 +592,20 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
}
void handleForceStopButtonClick() {
if (mAppEntry == null) {
setIntentAndFinish(true, true);
return;
}
if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
getActivity(), mAppsControlDisallowedAdmin);
} else {
showDialogInner(DLG_FORCE_STOP, 0);
//forceStopPackage(mAppInfo.packageName);
}
}
/** Returns whether there is only one user on this device, not including the system-only user */
private boolean isSingleUser() {
final int userCount = mUserManager.getUserCount();
@@ -671,7 +704,7 @@ public class AppInfoDashboardFragment extends DashboardFragment
}
}
void setIntentAndFinish(boolean finish, boolean appChanged) {
private void setIntentAndFinish(boolean finish, boolean appChanged) {
if (localLOGV) Log.i(TAG, "appChanged="+appChanged);
final Intent intent = new Intent();
intent.putExtra(ManageApplications.APP_CHG, appChanged);