diff options
| author | 2021-03-18 08:24:21 +0000 | |
|---|---|---|
| committer | 2021-03-18 08:24:21 +0000 | |
| commit | 3be701e7670519336bddfd9f2837c19556d76de9 (patch) | |
| tree | f0505d95daa334b4770f37bac76cfbecd878728b | |
| parent | 9ffc639aa12609b4ea8a18f2684f8bc60dddbf36 (diff) | |
| parent | b787d41387b09a92a853492532f8fd7070f22210 (diff) | |
Merge "Only allow preinstalled application to be able to call setHotwordDetectionServiceConfig" into sc-dev
6 files changed, 16 insertions, 1 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 2a99aaa94d2a..9c6ddc0c68df 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"; @@ -10355,7 +10356,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 048d9f57aded..9ba39a1b37f7 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 521d246dc0dc..57d2e658d5f1 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3707,6 +3707,13 @@ <permission android:name="android.permission.BIND_HOTWORD_DETECTION_SERVICE" android:protectionLevel="signature" /> + <!-- @SystemApi Allows an application to manage hotword detection on the device. + <p>Protection level: internal|preinstalled + @hide This is not a third-party API (intended for OEMs and system apps). + --> + <permission android:name="android.permission.MANAGE_HOTWORD_DETECTION" + android:protectionLevel="internal|preinstalled" /> + <!-- Must be required by a {@link android.service.autofill.AutofillService}, to ensure that only the system can bind to it. <p>Protection level: signature diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index a7b6636a15de..31cdaeb84077 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -490,6 +490,8 @@ applications that come with the platform <permission name="android.permission.SET_CLIP_SOURCE" /> <!-- Permission required for CTS test - FontManagerTest --> <permission name="android.permission.UPDATE_FONTS" /> + <!-- Permission required for hotword detection service CTS tests --> + <permission name="android.permission.MANAGE_HOTWORD_DETECTION" /> </privapp-permissions> <privapp-permissions package="com.android.statementservice"> diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index cf66bad45f3b..db38ff64cb04 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -430,6 +430,9 @@ <!-- Permission required for CTS test - FontManagerTest --> <uses-permission android:name="android.permission.UPDATE_FONTS" /> + <!-- Permission required for hotword detection service CTS tests --> + <uses-permission android:name="android.permission.MANAGE_HOTWORD_DETECTION" /> + <application android:label="@string/app_label" android:theme="@android:style/Theme.DeviceDefault.DayNight" android:defaultToDeviceProtectedStorage="true" diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 2626bfdc3d19..80d4f8fd0c2f 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -985,6 +985,7 @@ public class VoiceInteractionManagerService extends SystemService { @Override public void setHotwordDetectionServiceConfig(@Nullable Bundle options, @Nullable SharedMemory sharedMemory) { + enforceCallingPermission(Manifest.permission.MANAGE_HOTWORD_DETECTION); synchronized (this) { enforceIsCurrentVoiceInteractionService(); |