From b7f16fdde62edb01be4a160fd77c867dfe70e288 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Tue, 9 Jun 2020 14:15:58 +0200 Subject: Add a killswitch for AudioRecordingDisclosureBar This is applied exactly once per boot (not dynamic). Test: adb shell settings put global Test: adb reboot Bug: 152559914 Change-Id: I2e12ebd9cdce4433b5e85c9c22c5b7422dc287b8 --- .../tv/micdisclosure/AudioRecordingDisclosureBar.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java index 914868301d72..8b85a0961463 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java @@ -29,6 +29,8 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.PixelFormat; +import android.provider.Settings; +import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.view.Gravity; @@ -63,6 +65,9 @@ public class AudioRecordingDisclosureBar implements // CtsSystemUiHostTestCases:TvMicrophoneCaptureIndicatorTest private static final String LAYOUT_PARAMS_TITLE = "MicrophoneCaptureIndicator"; + private static final String EXEMPT_PACKAGES_LIST = "sysui_mic_disclosure_exempt"; + private static final String FORCED_PACKAGES_LIST = "sysui_mic_disclosure_forced"; + @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = {"STATE_"}, value = { STATE_NOT_SHOWN, @@ -134,6 +139,8 @@ public class AudioRecordingDisclosureBar implements mExemptPackages = new ArraySet<>( Arrays.asList(mContext.getResources().getStringArray( R.array.audio_recording_disclosure_exempt_apps))); + mExemptPackages.addAll(Arrays.asList(getGlobalStringArray(EXEMPT_PACKAGES_LIST))); + mExemptPackages.removeAll(Arrays.asList(getGlobalStringArray(FORCED_PACKAGES_LIST))); mAudioActivityObservers = new AudioActivityObserver[]{ new RecordAudioAppOpObserver(mContext, this), @@ -141,6 +148,11 @@ public class AudioRecordingDisclosureBar implements }; } + private String[] getGlobalStringArray(String setting) { + String result = Settings.Global.getString(mContext.getContentResolver(), setting); + return TextUtils.isEmpty(result) ? new String[0] : result.split(","); + } + @UiThread @Override public void onAudioActivityStateChange(boolean active, String packageName) { -- cgit v1.2.3-59-g8ed1b