Merge "Make some small fixes to sensor privacy ui" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1892798a28
@@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -49,9 +50,10 @@ public class CameraToggleTile extends SensorPrivacyToggleTile {
|
||||
StatusBarStateController statusBarStateController,
|
||||
ActivityStarter activityStarter,
|
||||
QSLogger qsLogger,
|
||||
IndividualSensorPrivacyController sensorPrivacyController) {
|
||||
IndividualSensorPrivacyController sensorPrivacyController,
|
||||
KeyguardStateController keyguardStateController) {
|
||||
super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
|
||||
activityStarter, qsLogger, sensorPrivacyController);
|
||||
activityStarter, qsLogger, sensorPrivacyController, keyguardStateController);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -49,9 +50,10 @@ public class MicrophoneToggleTile extends SensorPrivacyToggleTile {
|
||||
StatusBarStateController statusBarStateController,
|
||||
ActivityStarter activityStarter,
|
||||
QSLogger qsLogger,
|
||||
IndividualSensorPrivacyController sensorPrivacyController) {
|
||||
IndividualSensorPrivacyController sensorPrivacyController,
|
||||
KeyguardStateController keyguardStateController) {
|
||||
super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
|
||||
activityStarter, qsLogger, sensorPrivacyController);
|
||||
activityStarter, qsLogger, sensorPrivacyController, keyguardStateController);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
|
||||
/**
|
||||
* Superclass to toggle individual sensor privacy via quick settings tiles
|
||||
@@ -42,6 +43,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
||||
public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanState> implements
|
||||
IndividualSensorPrivacyController.Callback {
|
||||
|
||||
private final KeyguardStateController mKeyguard;
|
||||
private IndividualSensorPrivacyController mSensorPrivacyController;
|
||||
|
||||
/**
|
||||
@@ -61,10 +63,12 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS
|
||||
StatusBarStateController statusBarStateController,
|
||||
ActivityStarter activityStarter,
|
||||
QSLogger qsLogger,
|
||||
IndividualSensorPrivacyController sensorPrivacyController) {
|
||||
IndividualSensorPrivacyController sensorPrivacyController,
|
||||
KeyguardStateController keyguardStateController) {
|
||||
super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
|
||||
activityStarter, qsLogger);
|
||||
mSensorPrivacyController = sensorPrivacyController;
|
||||
mKeyguard = keyguardStateController;
|
||||
mSensorPrivacyController.observe(getLifecycle(), this);
|
||||
}
|
||||
|
||||
@@ -75,6 +79,13 @@ public abstract class SensorPrivacyToggleTile extends QSTileImpl<QSTile.BooleanS
|
||||
|
||||
@Override
|
||||
protected void handleClick() {
|
||||
if (mKeyguard.isMethodSecure() && mKeyguard.isShowing()) {
|
||||
mActivityStarter.postQSRunnableDismissingKeyguard(() -> {
|
||||
mSensorPrivacyController.setSensorBlocked(getSensorId(),
|
||||
!mSensorPrivacyController.isSensorBlocked(getSensorId()));
|
||||
});
|
||||
return;
|
||||
}
|
||||
mSensorPrivacyController.setSensorBlocked(getSensorId(),
|
||||
!mSensorPrivacyController.isSensorBlocked(getSensorId()));
|
||||
}
|
||||
|
||||
@@ -17,14 +17,19 @@
|
||||
package com.android.systemui.sensorprivacy
|
||||
|
||||
import android.app.AppOpsManager
|
||||
import android.app.KeyguardManager
|
||||
import android.app.KeyguardManager.KeyguardDismissCallback
|
||||
import android.content.DialogInterface
|
||||
import android.content.Intent.EXTRA_PACKAGE_NAME
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.res.Resources
|
||||
import android.hardware.SensorPrivacyManager
|
||||
import android.hardware.SensorPrivacyManager.*
|
||||
import android.hardware.SensorPrivacyManager.EXTRA_SENSOR
|
||||
import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_CAMERA
|
||||
import android.hardware.SensorPrivacyManager.INDIVIDUAL_SENSOR_MICROPHONE
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.util.Log
|
||||
import com.android.internal.app.AlertActivity
|
||||
import com.android.systemui.R
|
||||
|
||||
@@ -35,18 +40,29 @@ import com.android.systemui.R
|
||||
* <p>The dialog is started for the user the app is running for which might be a secondary users.
|
||||
*/
|
||||
class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListener {
|
||||
|
||||
companion object {
|
||||
private val LOG_TAG = SensorUseStartedActivity::class.java.simpleName
|
||||
}
|
||||
|
||||
private var sensor = -1
|
||||
private lateinit var sensorUsePackageName: String
|
||||
|
||||
private lateinit var sensorPrivacyManager: SensorPrivacyManager
|
||||
private lateinit var appOpsManager: AppOpsManager
|
||||
private lateinit var keyguardManager: KeyguardManager
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setShowWhenLocked(true)
|
||||
|
||||
setFinishOnTouchOutside(false)
|
||||
|
||||
setResult(RESULT_CANCELED)
|
||||
sensorPrivacyManager = getSystemService(SensorPrivacyManager::class.java)!!
|
||||
appOpsManager = getSystemService(AppOpsManager::class.java)!!
|
||||
keyguardManager = getSystemService(KeyguardManager::class.java)!!
|
||||
|
||||
sensorUsePackageName = intent.getStringExtra(EXTRA_PACKAGE_NAME) ?: return
|
||||
sensor = intent.getIntExtra(EXTRA_SENSOR, -1).also {
|
||||
@@ -107,8 +123,23 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene
|
||||
override fun onClick(dialog: DialogInterface?, which: Int) {
|
||||
when (which) {
|
||||
BUTTON_POSITIVE -> {
|
||||
sensorPrivacyManager.setIndividualSensorPrivacyForProfileGroup(sensor, false)
|
||||
setResult(RESULT_OK)
|
||||
if (keyguardManager.isDeviceLocked) {
|
||||
keyguardManager
|
||||
.requestDismissKeyguard(this, object : KeyguardDismissCallback() {
|
||||
override fun onDismissError() {
|
||||
Log.e(LOG_TAG, "Cannot dismiss keyguard")
|
||||
}
|
||||
|
||||
override fun onDismissSucceeded() {
|
||||
sensorPrivacyManager
|
||||
.setIndividualSensorPrivacyForProfileGroup(sensor, false)
|
||||
setResult(RESULT_OK)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
sensorPrivacyManager.setIndividualSensorPrivacyForProfileGroup(sensor, false)
|
||||
setResult(RESULT_OK)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,4 +151,8 @@ class SensorUseStartedActivity : AlertActivity(), DialogInterface.OnClickListene
|
||||
|
||||
sensorPrivacyManager.suppressIndividualSensorPrivacyReminders(sensorUsePackageName, false)
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
// do not allow backing out
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user