Settings: Properly handle ASI and WallpaperPreference for gms and vanilla builds

Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
This commit is contained in:
minaripenguin
2024-04-24 06:50:55 +08:00
committed by Joey
parent fb08c30d9b
commit 5154710c9b
7 changed files with 34 additions and 13 deletions

View File

@@ -267,6 +267,11 @@
com.android.settings.intelligence com.android.settings.intelligence
</string> </string>
<!-- Google Settings intelligence package name -->
<string name="config_google_settingsintelligence_package_name" translatable="false">
com.google.android.settings.intelligence
</string>
<!-- Settings intelligence interaction log intent action --> <!-- Settings intelligence interaction log intent action -->
<string name="config_settingsintelligence_log_action" translatable="false"></string> <string name="config_settingsintelligence_log_action" translatable="false"></string>

View File

@@ -1286,6 +1286,15 @@ public final class Utils extends com.android.settingslib.Utils {
return false; return false;
} }
public static String getAsiPackage(Context context) {
final boolean isGoogleAsiInstalled = com.android.internal.util.evolution.Utils.isPackageInstalled(context,
context.getString(R.string.config_google_settingsintelligence_package_name));
final String settingsIntelligencePkg = context.getString(isGoogleAsiInstalled
? R.string.config_google_settingsintelligence_package_name
: R.string.config_settingsintelligence_package_name);
return settingsIntelligencePkg;
}
/** /**
* Returns true if current binder uid is Settings Intelligence. * Returns true if current binder uid is Settings Intelligence.
*/ */
@@ -1293,7 +1302,7 @@ public final class Utils extends com.android.settingslib.Utils {
final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid();
final String callingPackage = context.getPackageManager().getPackagesForUid(callingUid)[0]; final String callingPackage = context.getPackageManager().getPackagesForUid(callingUid)[0];
final boolean isSettingsIntelligence = TextUtils.equals(callingPackage, final boolean isSettingsIntelligence = TextUtils.equals(callingPackage,
context.getString(R.string.config_settingsintelligence_package_name)); getAsiPackage(context));
return isSettingsIntelligence; return isSettingsIntelligence;
} }

View File

@@ -42,6 +42,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.internal.telephony.SmsApplication; import com.android.internal.telephony.SmsApplication;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.webview.WebViewUpdateServiceWrapper; import com.android.settings.webview.WebViewUpdateServiceWrapper;
import java.util.ArrayList; import java.util.ArrayList;
@@ -193,7 +194,7 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
// Keep Settings intelligence enabled, otherwise search feature will be disabled. // Keep Settings intelligence enabled, otherwise search feature will be disabled.
keepEnabledPackages.add( keepEnabledPackages.add(
mContext.getString(R.string.config_settingsintelligence_package_name)); Utils.getAsiPackage(mContext));
// Keep Package Installer enabled. // Keep Package Installer enabled.
keepEnabledPackages.add(mContext.getString(R.string.config_package_installer_package_name)); keepEnabledPackages.add(mContext.getString(R.string.config_package_installer_package_name));

View File

@@ -32,11 +32,17 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference; import com.android.settingslib.RestrictedPreference;
import com.android.internal.util.evolution.Utils;
import java.util.List; import java.util.List;
public class WallpaperPreferenceController extends BasePreferenceController { public class WallpaperPreferenceController extends BasePreferenceController {
private static final String TAG = "WallpaperPrefController"; private static final String TAG = "WallpaperPrefController";
private static final String LAUNCHED_SETTINGS = "app_launched_settings"; private static final String LAUNCHED_SETTINGS = "app_launched_settings";
private static final String DEFAULT_WP_CLASS = "com.android.settings.Settings$WallpaperSettingsActivity";
private static final String DEFAULT_WP_PKG = "com.android.settings";
private static final String GOOGLE_WP_CLASS = "com.google.android.apps.wallpaper.picker.CategoryPickerActivity";
private static final String GOOGLE_WP_PKG = "com.google.android.apps.wallpaper";
private final String mWallpaperPackage; private final String mWallpaperPackage;
private final String mWallpaperClass; private final String mWallpaperClass;
@@ -47,13 +53,14 @@ public class WallpaperPreferenceController extends BasePreferenceController {
public WallpaperPreferenceController(Context context, String key) { public WallpaperPreferenceController(Context context, String key) {
super(context, key); super(context, key);
mWallpaperPackage = mContext.getString(R.string.config_wallpaper_picker_package); final boolean isGoogleWpInstalled = Utils.isPackageInstalled(context, GOOGLE_WP_PKG);
mWallpaperClass = mContext.getString(R.string.config_wallpaper_picker_class); mWallpaperPackage = isGoogleWpInstalled ? GOOGLE_WP_PKG : DEFAULT_WP_PKG;
mStylesAndWallpaperClass = mWallpaperClass = isGoogleWpInstalled ? GOOGLE_WP_CLASS : DEFAULT_WP_CLASS;
mContext.getString(R.string.config_styles_and_wallpaper_picker_class); mStylesAndWallpaperClass = isGoogleWpInstalled ?
mWallpaperActionName = mContext.getString(R.string.config_wallpaper_picker_action); mContext.getString(R.string.config_styles_and_wallpaper_picker_class) : "";
mStylesAndWallpaperActionName = mWallpaperActionName = isGoogleWpInstalled ? mContext.getString(R.string.config_wallpaper_picker_action) : "";
mContext.getString(R.string.config_styles_and_wallpaper_picker_action); mStylesAndWallpaperActionName = isGoogleWpInstalled ?
mContext.getString(R.string.config_styles_and_wallpaper_picker_action) : "";
mWallpaperLaunchExtra = mContext.getString(R.string.config_wallpaper_picker_launch_extra); mWallpaperLaunchExtra = mContext.getString(R.string.config_wallpaper_picker_launch_extra);
} }

View File

@@ -69,7 +69,7 @@ public interface SearchFeatureProvider {
* @return a package name of settings intelligence. * @return a package name of settings intelligence.
*/ */
default String getSettingsIntelligencePkgName(Context context) { default String getSettingsIntelligencePkgName(Context context) {
return context.getString(R.string.config_settingsintelligence_package_name); return Utils.getAsiPackage(context);
} }
/** /**

View File

@@ -65,8 +65,7 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM
@Override @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
final Activity activity = mHost.getActivity(); final Activity activity = mHost.getActivity();
final String SettingsIntelligencePkgName = activity.getString( final String SettingsIntelligencePkgName = Utils.getAsiPackage(activity);
R.string.config_settingsintelligence_package_name);
if (!WizardManagerHelper.isDeviceProvisioned(activity) if (!WizardManagerHelper.isDeviceProvisioned(activity)
|| WizardManagerHelper.isAnySetupWizard(activity.getIntent())) { || WizardManagerHelper.isAnySetupWizard(activity.getIntent())) {
return; return;

View File

@@ -517,7 +517,7 @@ public class SettingsSliceProvider extends SliceProvider {
return hasPermission return hasPermission
&& TextUtils.equals( && TextUtils.equals(
callingPackage, callingPackage,
context.getString(R.string.config_settingsintelligence_package_name)); Utils.getAsiPackage(context));
} }
return false; return false;
} }