Adding settings for managing auto-enter picture-in-picture.
- Add per-app setting for users to control whether an app can enter picture-in-picture when it is hidden. Bug: 34520451 Test: make -j40 RunSettingsRoboTests Change-Id: I182d6069ad01e42f1d3d6623ea21362ce802efba Signed-off-by: Winson Chung <winsonc@google.com>
This commit is contained in:
@@ -21,8 +21,6 @@ import android.app.Activity;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.LoaderManager.LoaderCallbacks;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -52,9 +50,8 @@ import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.service.notification.NotificationListenerService.Ranking;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.support.v14.preference.SwitchPreference;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.Preference.OnPreferenceClickListener;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
@@ -78,7 +75,6 @@ import android.widget.TextView;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.os.BatterySipper;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.AppHeader;
|
||||
import com.android.settings.DeviceAdminAdd;
|
||||
import com.android.settings.R;
|
||||
@@ -933,9 +929,23 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
AdvancedAppSettings.class, "default_sms_app", R.string.sms_application_title,
|
||||
R.string.configure_apps));
|
||||
}
|
||||
|
||||
// Get the package info with the activities
|
||||
PackageInfo packageInfoWithActivities = null;
|
||||
try {
|
||||
packageInfoWithActivities = mPm.getPackageInfoAsUser(mPackageName,
|
||||
PackageManager.GET_ACTIVITIES, UserHandle.myUserId());
|
||||
} catch (NameNotFoundException e) {
|
||||
Log.e(TAG, "Exception while retrieving the package info of " + mPackageName, e);
|
||||
}
|
||||
|
||||
boolean hasDrawOverOtherApps = hasPermission(permission.SYSTEM_ALERT_WINDOW);
|
||||
boolean hasWriteSettings = hasPermission(permission.WRITE_SETTINGS);
|
||||
if (hasDrawOverOtherApps || hasWriteSettings) {
|
||||
boolean hasPictureInPictureActivities = (packageInfoWithActivities != null) &&
|
||||
PictureInPictureSettings.checkPackageHasPictureInPictureActivities(
|
||||
packageInfoWithActivities.packageName,
|
||||
packageInfoWithActivities.activities);
|
||||
if (hasDrawOverOtherApps || hasWriteSettings || hasPictureInPictureActivities) {
|
||||
PreferenceCategory category = new PreferenceCategory(getPrefContext());
|
||||
category.setTitle(R.string.advanced_apps);
|
||||
screen.addPreference(category);
|
||||
@@ -968,6 +978,23 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
});
|
||||
category.addPreference(pref);
|
||||
}
|
||||
if (hasPictureInPictureActivities) {
|
||||
final SwitchPreference pref = new SwitchPreference(getPrefContext());
|
||||
pref.setPersistent(false);
|
||||
pref.setTitle(R.string.picture_in_picture_app_detail_title);
|
||||
pref.setSummary(R.string.picture_in_picture_app_detail_summary);
|
||||
pref.setChecked(PictureInPictureSettings.getEnterPipOnHideStateForPackage(
|
||||
getContext(), mPackageInfo.applicationInfo.uid, mPackageName));
|
||||
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
PictureInPictureSettings.setEnterPipOnHideStateForPackage(getContext(),
|
||||
mPackageInfo.applicationInfo.uid, mPackageName, (Boolean) newValue);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
category.addPreference(pref);
|
||||
}
|
||||
}
|
||||
|
||||
addAppInstallerInfoPref(screen);
|
||||
|
Reference in New Issue
Block a user