diff options
| author | 2023-10-18 15:14:50 +0000 | |
|---|---|---|
| committer | 2023-10-18 15:14:50 +0000 | |
| commit | 4920338816f7f46f3ef3e378f411dc7668e61aa5 (patch) | |
| tree | f83c725c1a734f929971e708217afe354587f962 | |
| parent | 2a11530325e958d74060da05a9e6fda4ff705e28 (diff) | |
| parent | 194927bde7f2f47973fe194e580019fa7bc55f62 (diff) | |
Merge "When the user changes the OP_RECEIVE_SANDBOX_TRIGGER_AUDIO op mode to MODE_ERRORED via UI toggle, the following actions will be taken to prevent the assistant app from being voice-activated:" into main
| -rw-r--r-- | services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java index 42b08e3c5442..93b5a40a5fc0 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java @@ -20,6 +20,8 @@ import static android.Manifest.permission.CAPTURE_AUDIO_HOTWORD; import static android.Manifest.permission.LOG_COMPAT_CHANGE; import static android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG; import static android.Manifest.permission.RECORD_AUDIO; +import static android.app.AppOpsManager.MODE_ALLOWED; +import static android.app.AppOpsManager.MODE_DEFAULT; import static android.service.attention.AttentionService.PROXIMITY_UNKNOWN; import static android.service.voice.HotwordDetectionService.AUDIO_SOURCE_EXTERNAL; import static android.service.voice.HotwordDetectionService.ENABLE_PROXIMITY_RESULT; @@ -753,11 +755,21 @@ abstract class DetectorSession { "Failed to obtain permission RECORD_AUDIO for identity " + mVoiceInteractorIdentity); } - mAppOpsManager.noteOpNoThrow( - AppOpsPolicy.getVoiceActivationOp(), - mVoiceInteractorIdentity.uid, mVoiceInteractorIdentity.packageName, - mVoiceInteractorIdentity.attributionTag, - HOTWORD_DETECTION_OP_MESSAGE); + int opMode = mAppOpsManager.unsafeCheckOpNoThrow( + AppOpsManager.opToPublicName(AppOpsPolicy.getVoiceActivationOp()), + mVoiceInteractorIdentity.uid, + mVoiceInteractorIdentity.packageName); + if (opMode == MODE_DEFAULT || opMode == MODE_ALLOWED) { + mAppOpsManager.noteOpNoThrow( + AppOpsPolicy.getVoiceActivationOp(), + mVoiceInteractorIdentity.uid, mVoiceInteractorIdentity.packageName, + mVoiceInteractorIdentity.attributionTag, + HOTWORD_DETECTION_OP_MESSAGE); + } else { + throw new SecurityException( + "The app op OP_RECEIVE_SANDBOX_TRIGGER_AUDIO is denied for " + + "identity" + mVoiceInteractorIdentity); + } } else { enforcePermissionForDataDelivery(mContext, mVoiceInteractorIdentity, RECORD_AUDIO, HOTWORD_DETECTION_OP_MESSAGE); |