add permission check for isUltrasoundSupported

Bug: 217366076
Test: build pass
Signed-off-by: Carter Hsu <carterhsu@google.com>
Change-Id: I7f68e5f6244637973b7ca468c4eef1dc5b05aaad
This commit is contained in:
Carter Hsu
2022-02-15 15:59:00 +08:00
parent b2134e69f7
commit 3ea30de47b
4 changed files with 23 additions and 3 deletions

View File

@@ -6013,7 +6013,7 @@ package android.media {
method public boolean isAudioServerRunning();
method public boolean isHdmiSystemAudioSupported();
method @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public boolean isPstnCallAudioInterceptable();
method public static boolean isUltrasoundSupported();
method @RequiresPermission(android.Manifest.permission.ACCESS_ULTRASOUND) public boolean isUltrasoundSupported();
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void muteAwaitConnection(@NonNull int[], @NonNull android.media.AudioDeviceAttributes, long, @NonNull java.util.concurrent.TimeUnit) throws java.lang.IllegalStateException;
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void registerMuteAwaitConnectionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.MuteAwaitConnectionCallback);

View File

@@ -7293,8 +7293,13 @@ public class AudioManager {
* Ultrasound playback and capture, false otherwise.
*/
@SystemApi
public static boolean isUltrasoundSupported() {
return AudioSystem.isUltrasoundSupported();
@RequiresPermission(android.Manifest.permission.ACCESS_ULTRASOUND)
public boolean isUltrasoundSupported() {
try {
return getService().isUltrasoundSupported();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**

View File

@@ -136,6 +136,8 @@ interface IAudioService {
boolean isMicrophoneMuted();
boolean isUltrasoundSupported();
void setMicrophoneMute(boolean on, String callingPackage, int userId, in String attributionTag);
oneway void setMicrophoneMuteFromSwitch(boolean on);

View File

@@ -3249,6 +3249,13 @@ public class AudioService extends IAudioService.Stub
}
}
private void enforceAccessUltrasoundPermission() {
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.ACCESS_ULTRASOUND)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Missing ACCESS_ULTRASOUND permission");
}
}
private void enforceQueryStatePermission() {
if (mContext.checkCallingOrSelfPermission(Manifest.permission.QUERY_AUDIO_STATE)
!= PackageManager.PERMISSION_GRANTED) {
@@ -3381,6 +3388,12 @@ public class AudioService extends IAudioService.Stub
attributionTag, Binder.getCallingUid(), callingOrSelfHasAudioSettingsPermission());
}
/** @see AudioManager#isUltrasoundSupported() */
public boolean isUltrasoundSupported() {
enforceAccessUltrasoundPermission();
return AudioSystem.isUltrasoundSupported();
}
private boolean canChangeAccessibilityVolume() {
synchronized (mAccessibilityServiceUidsLock) {
if (PackageManager.PERMISSION_GRANTED == mContext.checkCallingOrSelfPermission(