private String mCurrentPkgName;
private int mCurrentUid;
+ private boolean mFinishAfterDialog;
private Menu mOptionsMenu;
mListType = LIST_TYPE_HIGH_POWER;
// Default to showing system.
mShowSystem = true;
- if (intent != null && Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
- .equals(intent.getAction())) {
+ if (Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS.equals(intent.getAction())
+ && intent.getData() != null) {
mCurrentPkgName = intent.getData().getSchemeSpecificPart();
if (mCurrentPkgName != null) {
mCurrentUid = mApplicationsState.getEntry(mCurrentPkgName,
UserHandle.myUserId()).info.uid;
+ mFinishAfterDialog = true;
startApplicationDetailsActivity();
}
}
if (requestCode == INSTALLED_APP_DETAILS && mCurrentPkgName != null) {
if (mListType == LIST_TYPE_NOTIFICATION) {
mApplications.mExtraInfoBridge.forceUpdate(mCurrentPkgName, mCurrentUid);
+ } else if (mListType == LIST_TYPE_HIGH_POWER) {
+ if (mFinishAfterDialog) {
+ getActivity().onBackPressed();
+ } else {
+ mApplications.mExtraInfoBridge.forceUpdate(mCurrentPkgName, mCurrentUid);
+ }
} else {
mApplicationsState.requestSize(mCurrentPkgName, UserHandle.getUserId(mCurrentUid));
}
startAppInfoFragment(AppStorageSettings.class, R.string.storage_settings);
break;
case LIST_TYPE_HIGH_POWER:
- HighPowerDetail.show(getActivity(), mCurrentPkgName);
+ HighPowerDetail.show(this, mCurrentPkgName, INSTALLED_APP_DETAILS,
+ mFinishAfterDialog);
break;
// TODO: Figure out if there is a way where we can spin up the profile's settings
// process ahead of time, to avoid a long load of data when user clicks on a managed app.
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
+import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
public class HighPowerDetail extends DialogFragment implements OnClickListener {
+ private static final String ARG_DEFAULT_ON = "default_on";
+
private final PowerWhitelistBackend mBackend = PowerWhitelistBackend.getInstance();
private String mPackageName;
private CharSequence mLabel;
+ private boolean mDefaultOn;
private Adapter mAdapter;
private int mSelectedIndex;
} catch (NameNotFoundException e) {
mLabel = mPackageName;
}
+ mDefaultOn = getArguments().getBoolean(ARG_DEFAULT_ON);
mAdapter = new Adapter(getContext(), R.layout.radio_with_summary);
mAdapter.add(new Pair<String, String>(getString(R.string.ignore_optimizations_on),
getString(R.string.ignore_optimizations_on_desc)));
mAdapter.add(new Pair<String, String>(getString(R.string.ignore_optimizations_off),
getString(R.string.ignore_optimizations_off_desc)));
- mSelectedIndex = mBackend.isWhitelisted(mPackageName) ? 0 : 1;
+ mSelectedIndex = mDefaultOn || mBackend.isWhitelisted(mPackageName) ? 0 : 1;
if (mBackend.isSysWhitelisted(mPackageName)) {
mAdapter.setEnabled(1, false);
}
}
}
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ super.onDismiss(dialog);
+ Fragment target = getTargetFragment();
+ if (target != null) {
+ target.onActivityResult(getTargetRequestCode(), 0, null);
+ }
+ }
+
public static CharSequence getSummary(Context context, AppEntry entry) {
return getSummary(context, entry.info.packageName);
}
? R.string.high_power_on : R.string.high_power_off);
}
- public static void show(Activity activity, String packageName) {
+ public static void show(Fragment caller, String packageName, int requestCode,
+ boolean defaultToOn) {
HighPowerDetail fragment = new HighPowerDetail();
Bundle args = new Bundle();
args.putString(AppInfoBase.ARG_PACKAGE_NAME, packageName);
+ args.putBoolean(ARG_DEFAULT_ON, defaultToOn);
fragment.setArguments(args);
- fragment.show(activity.getFragmentManager(), HighPowerDetail.class.getSimpleName());
+ fragment.setTargetFragment(caller, requestCode);
+ fragment.show(caller.getFragmentManager(), HighPowerDetail.class.getSimpleName());
}
private class Adapter extends ArrayAdapter<Pair<String, String>> {