From b787d41387b09a92a853492532f8fd7070f22210 Mon Sep 17 00:00:00 2001 From: lpeter Date: Tue, 16 Mar 2021 05:08:12 +0800 Subject: [PATCH] Only allow preinstalled application to be able to call setHotwordDetectionServiceConfig We added a new permission "MANAGE_HOTWORD_DETECTION" to allow the application that held this permission to be able to use setHotwordDetectionServiceConfig functions. In order to avoid the feature leakage, we submit the change about Shell in internal branch. Bug: 178346114 Test: atest CtsVoiceInteractionTestCases Test: atest PermissionPolicyTest Change-Id: I8829c3c389fb5fe4b06ffcf21870db50fa2ede4b --- core/api/system-current.txt | 3 ++- .../android/service/voice/VoiceInteractionService.java | 1 + core/res/AndroidManifest.xml | 7 +++++++ data/etc/privapp-permissions-platform.xml | 2 ++ packages/Shell/AndroidManifest.xml | 3 +++ .../voiceinteraction/VoiceInteractionManagerService.java | 1 + 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index bfc205b9f9a67..71828ca7b4130 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -136,6 +136,7 @@ package android { field public static final String MANAGE_CONTENT_SUGGESTIONS = "android.permission.MANAGE_CONTENT_SUGGESTIONS"; field public static final String MANAGE_DEBUGGING = "android.permission.MANAGE_DEBUGGING"; field public static final String MANAGE_FACTORY_RESET_PROTECTION = "android.permission.MANAGE_FACTORY_RESET_PROTECTION"; + field public static final String MANAGE_HOTWORD_DETECTION = "android.permission.MANAGE_HOTWORD_DETECTION"; field public static final String MANAGE_IPSEC_TUNNELS = "android.permission.MANAGE_IPSEC_TUNNELS"; field public static final String MANAGE_MUSIC_RECOGNITION = "android.permission.MANAGE_MUSIC_RECOGNITION"; field public static final String MANAGE_NOTIFICATION_LISTENERS = "android.permission.MANAGE_NOTIFICATION_LISTENERS"; @@ -10262,7 +10263,7 @@ package android.service.voice { public class VoiceInteractionService extends android.app.Service { method @NonNull public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback); - method @NonNull public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, @Nullable android.os.Bundle, @Nullable android.os.SharedMemory, android.service.voice.AlwaysOnHotwordDetector.Callback); + method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, @Nullable android.os.Bundle, @Nullable android.os.SharedMemory, android.service.voice.AlwaysOnHotwordDetector.Callback); method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager(); } diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java index 048d9f57aded1..9ba39a1b37f75 100644 --- a/core/java/android/service/voice/VoiceInteractionService.java +++ b/core/java/android/service/voice/VoiceInteractionService.java @@ -353,6 +353,7 @@ public class VoiceInteractionService extends Service { * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.MANAGE_HOTWORD_DETECTION) @NonNull public final AlwaysOnHotwordDetector createAlwaysOnHotwordDetector( @SuppressLint("MissingNullability") String keyphrase, // TODO: nullability properly diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index f92276171b266..e697c83869014 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3690,6 +3690,13 @@ + + + + + diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index b4194fd5bbf9b..de7f848211d10 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -429,6 +429,9 @@ + + +