Do not show static overlays as a theme
Static overlays aren't changeable by a user. So we shouldn't list them as a theme. This CL fixed b/36812704 as well to run unit tests. Test: building succeeded and tested on sailfish. make RunSettingsRoboTests adb shell am instrument -w -e class \ com.android.settings.display.ThemePreferenceControllerTest \ com.android.settings.tests.unit/android.support.test.runner.AndroidJUnitRunner Bug: 37480890 Bug: 36812704 Change-Id: I8c13b6956083095dceaab3da6642bef1647d6a30
This commit is contained in:
@@ -18,6 +18,7 @@ import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION
|
||||
import android.content.Context;
|
||||
import android.content.om.IOverlayManager;
|
||||
import android.content.om.OverlayInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.os.RemoteException;
|
||||
@@ -35,6 +36,7 @@ import com.android.settings.overlay.FeatureFactory;
|
||||
|
||||
import libcore.util.Objects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ThemePreferenceController extends PreferenceController implements
|
||||
@@ -109,12 +111,22 @@ public class ThemePreferenceController extends PreferenceController implements
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean isChangeableOverlay(String packageName) {
|
||||
try {
|
||||
PackageInfo pi = mPackageManager.getPackageInfo(packageName, 0);
|
||||
return pi != null && !pi.isStaticOverlay;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private String getTheme() {
|
||||
try {
|
||||
List<OverlayInfo> infos = mOverlayService.getOverlayInfosForTarget("android",
|
||||
UserHandle.myUserId());
|
||||
for (int i = 0, size = infos.size(); i < size; i++) {
|
||||
if (infos.get(i).isEnabled()) {
|
||||
if (infos.get(i).isEnabled() &&
|
||||
isChangeableOverlay(infos.get(i).packageName)) {
|
||||
return infos.get(i).packageName;
|
||||
}
|
||||
}
|
||||
@@ -141,11 +153,13 @@ public class ThemePreferenceController extends PreferenceController implements
|
||||
try {
|
||||
List<OverlayInfo> infos = mOverlayService.getOverlayInfosForTarget("android",
|
||||
UserHandle.myUserId());
|
||||
String[] pkgs = new String[infos.size()];
|
||||
List<String> pkgs = new ArrayList(infos.size());
|
||||
for (int i = 0, size = infos.size(); i < size; i++) {
|
||||
pkgs[i] = infos.get(i).packageName;
|
||||
if (isChangeableOverlay(infos.get(i).packageName)) {
|
||||
pkgs.add(infos.get(i).packageName);
|
||||
}
|
||||
}
|
||||
return pkgs;
|
||||
return pkgs.toArray(new String[pkgs.size()]);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
return new String[0];
|
||||
|
Reference in New Issue
Block a user