summaryrefslogtreecommitdiff
path: root/Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java
diff options
context:
space:
mode:
Diffstat (limited to 'Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java')
-rw-r--r--Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java28
1 files changed, 21 insertions, 7 deletions
diff --git a/Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java b/Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java
index 7e425beae..db39b76dc 100644
--- a/Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java
+++ b/Settings/src/com/android/tv/settings/device/apps/specialaccess/PictureInPicture.java
@@ -28,12 +28,15 @@ import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
-import androidx.preference.SwitchPreference;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.applications.ApplicationsState;
import com.android.tv.settings.R;
import com.android.tv.settings.SettingsPreferenceFragment;
+import com.android.tv.settings.widget.SwitchWithSoundPreference;
+
+import java.util.List;
+import java.util.stream.Collectors;
/**
* Fragment for managing which apps are granted PIP access
@@ -110,16 +113,14 @@ public class PictureInPicture extends SettingsPreferenceFragment
@Override
public Preference bindPreference(@NonNull Preference preference,
ApplicationsState.AppEntry entry) {
- final TwoStatePreference switchPref = (SwitchPreference) preference;
+ final TwoStatePreference switchPref = (SwitchWithSoundPreference) preference;
switchPref.setTitle(entry.label);
switchPref.setKey(entry.info.packageName);
switchPref.setIcon(entry.icon);
switchPref.setChecked((Boolean) entry.extraInfo);
switchPref.setOnPreferenceChangeListener((pref, newValue) -> {
- mAppOpsManager.setMode(AppOpsManager.OP_PICTURE_IN_PICTURE,
- entry.info.uid,
- entry.info.packageName,
- (Boolean) newValue ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
+ findEntriesUsingPackageName(entry.info.packageName)
+ .forEach(packageEntry -> setPiPMode(entry, (Boolean) newValue));
return true;
});
switchPref.setSummaryOn(R.string.app_permission_summary_allowed);
@@ -127,10 +128,23 @@ public class PictureInPicture extends SettingsPreferenceFragment
return switchPref;
}
+ private void setPiPMode(ApplicationsState.AppEntry entry, boolean newValue) {
+ mAppOpsManager.setMode(AppOpsManager.OP_PICTURE_IN_PICTURE,
+ entry.info.uid,
+ entry.info.packageName,
+ newValue ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
+ }
+
+ private List<ApplicationsState.AppEntry> findEntriesUsingPackageName(String packageName) {
+ return mManageApplicationsController.getApps().stream()
+ .filter(entry -> entry.info.packageName.equals(packageName))
+ .collect(Collectors.toList());
+ }
+
@NonNull
@Override
public Preference createAppPreference() {
- return new SwitchPreference(getPreferenceManager().getContext());
+ return new SwitchWithSoundPreference(getPreferenceManager().getContext());
}
@NonNull