Loading services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +51 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ import android.content.pm.UserPackage; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.database.ContentObserver; import android.graphics.Point; import android.graphics.drawable.Icon; import android.net.Uri; Loading @@ -111,6 +112,7 @@ import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.DeviceConfig; import android.provider.Settings; import android.service.appwidget.AppWidgetServiceDumpProto; import android.service.appwidget.GeneratedPreviewsProto; import android.service.appwidget.WidgetProto; Loading Loading @@ -178,6 +180,7 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -433,6 +436,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku computeMaximumWidgetBitmapMemory(); registerBroadcastReceiver(); registerOnCrossProfileProvidersChangedListener(); registerSettingsObserver(); LocalServices.addService(AppWidgetManagerInternal.class, new AppWidgetManagerLocal()); } Loading Loading @@ -609,6 +613,53 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } /** * Registers a content observer for settings changes. */ private void registerSettingsObserver() { final Uri fontScaleUri = Settings.System.getUriFor(Settings.System.FONT_SCALE); final Uri[] urisToObserve = new Uri[]{fontScaleUri}; final ContentObserver mSettingsObserver = new ContentObserver(mCallbackHandler) { @Override public void onChange(boolean selfChange, @NonNull Collection<Uri> uris, int flags, @NonNull UserHandle user) { for (Uri uri : uris) { if (uri.equals(fontScaleUri)) { onFontScaleChanged(user.getIdentifier()); } } } }; final ContentResolver resolver = mContext.getContentResolver(); for (Uri uri : urisToObserve) { resolver.registerContentObserver(uri, /* notifyForDescendants= */ false, mSettingsObserver, UserHandle.USER_ALL); } } /** * When the font scale setting changes for a user, request a widget update from all of the * providers for that user. */ private void onFontScaleChanged(int userId) { if (DEBUG) { Slog.i(TAG, "onFontScaleChanged " + userId); } synchronized (mLock) { for (Provider provider : mProviders) { if (provider.widgets.isEmpty() || (userId != UserHandle.getUserId(provider.id.uid) && userId != UserHandle.USER_ALL)) { continue; } sendUpdateIntentLocked(provider, getWidgetIds(provider.widgets), /* interactive= */ true); } } } public void setSafeMode(boolean safeMode) { mSafeMode = safeMode; } Loading Loading
services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +51 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,7 @@ import android.content.pm.UserPackage; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.database.ContentObserver; import android.graphics.Point; import android.graphics.drawable.Icon; import android.net.Uri; Loading @@ -111,6 +112,7 @@ import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.DeviceConfig; import android.provider.Settings; import android.service.appwidget.AppWidgetServiceDumpProto; import android.service.appwidget.GeneratedPreviewsProto; import android.service.appwidget.WidgetProto; Loading Loading @@ -178,6 +180,7 @@ import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; Loading Loading @@ -433,6 +436,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku computeMaximumWidgetBitmapMemory(); registerBroadcastReceiver(); registerOnCrossProfileProvidersChangedListener(); registerSettingsObserver(); LocalServices.addService(AppWidgetManagerInternal.class, new AppWidgetManagerLocal()); } Loading Loading @@ -609,6 +613,53 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } /** * Registers a content observer for settings changes. */ private void registerSettingsObserver() { final Uri fontScaleUri = Settings.System.getUriFor(Settings.System.FONT_SCALE); final Uri[] urisToObserve = new Uri[]{fontScaleUri}; final ContentObserver mSettingsObserver = new ContentObserver(mCallbackHandler) { @Override public void onChange(boolean selfChange, @NonNull Collection<Uri> uris, int flags, @NonNull UserHandle user) { for (Uri uri : uris) { if (uri.equals(fontScaleUri)) { onFontScaleChanged(user.getIdentifier()); } } } }; final ContentResolver resolver = mContext.getContentResolver(); for (Uri uri : urisToObserve) { resolver.registerContentObserver(uri, /* notifyForDescendants= */ false, mSettingsObserver, UserHandle.USER_ALL); } } /** * When the font scale setting changes for a user, request a widget update from all of the * providers for that user. */ private void onFontScaleChanged(int userId) { if (DEBUG) { Slog.i(TAG, "onFontScaleChanged " + userId); } synchronized (mLock) { for (Provider provider : mProviders) { if (provider.widgets.isEmpty() || (userId != UserHandle.getUserId(provider.id.uid) && userId != UserHandle.USER_ALL)) { continue; } sendUpdateIntentLocked(provider, getWidgetIds(provider.widgets), /* interactive= */ true); } } } public void setSafeMode(boolean safeMode) { mSafeMode = safeMode; } Loading