Use ActivityStarter to start Settings activity
This CL fixes the Activity started when clicking the "Settings" button of the Volume dialog. This ensures that the keyguard is dismissed if we are showing the Dialog on the keyguard. Bug: 202262476 Test: Manual Change-Id: I3fcfba5a46cbef2e60733e3dbe93578d10db6f3a
This commit is contained in:
@@ -52,6 +52,7 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
|
||||
import com.android.settingslib.media.MediaOutputConstants;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.statusbar.phone.SystemUIDialog;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -69,6 +70,7 @@ public class VolumePanelDialog extends SystemUIDialog implements LifecycleOwner
|
||||
private static final int DURATION_SLICE_BINDING_TIMEOUT_MS = 200;
|
||||
private static final int DEFAULT_SLICE_SIZE = 4;
|
||||
|
||||
private final ActivityStarter mActivityStarter;
|
||||
private RecyclerView mVolumePanelSlices;
|
||||
private VolumePanelSlicesAdapter mVolumePanelSlicesAdapter;
|
||||
private final LifecycleRegistry mLifecycleRegistry;
|
||||
@@ -78,8 +80,10 @@ public class VolumePanelDialog extends SystemUIDialog implements LifecycleOwner
|
||||
private boolean mSlicesReadyToLoad;
|
||||
private LocalBluetoothProfileManager mProfileManager;
|
||||
|
||||
public VolumePanelDialog(Context context, boolean aboveStatusBar) {
|
||||
public VolumePanelDialog(Context context,
|
||||
ActivityStarter activityStarter, boolean aboveStatusBar) {
|
||||
super(context);
|
||||
mActivityStarter = activityStarter;
|
||||
mLifecycleRegistry = new LifecycleRegistry(this);
|
||||
if (!aboveStatusBar) {
|
||||
getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
|
||||
@@ -100,9 +104,11 @@ public class VolumePanelDialog extends SystemUIDialog implements LifecycleOwner
|
||||
doneButton.setOnClickListener(v -> dismiss());
|
||||
Button settingsButton = dialogView.findViewById(R.id.settings_button);
|
||||
settingsButton.setOnClickListener(v -> {
|
||||
getContext().startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS).addFlags(
|
||||
Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||
dismiss();
|
||||
|
||||
Intent intent = new Intent(Settings.ACTION_SOUND_SETTINGS);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
mActivityStarter.startActivity(intent, /* dismissShade= */ true);
|
||||
});
|
||||
|
||||
LocalBluetoothManager localBluetoothManager = LocalBluetoothManager.getInstance(
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.util.Log
|
||||
import android.view.View
|
||||
import com.android.systemui.animation.DialogLaunchAnimator
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val TAG = "VolumePanelFactory"
|
||||
@@ -33,6 +34,7 @@ private val DEBUG = Log.isLoggable(TAG, Log.DEBUG)
|
||||
@SysUISingleton
|
||||
class VolumePanelFactory @Inject constructor(
|
||||
private val context: Context,
|
||||
private val activityStarter: ActivityStarter,
|
||||
private val dialogLaunchAnimator: DialogLaunchAnimator
|
||||
) {
|
||||
companion object {
|
||||
@@ -45,7 +47,7 @@ class VolumePanelFactory @Inject constructor(
|
||||
return
|
||||
}
|
||||
|
||||
val dialog = VolumePanelDialog(context, aboveStatusBar)
|
||||
val dialog = VolumePanelDialog(context, activityStarter, aboveStatusBar)
|
||||
volumePanelDialog = dialog
|
||||
|
||||
// Show the dialog.
|
||||
|
||||
Reference in New Issue
Block a user