summaryrefslogtreecommitdiff
path: root/core/java/android/widget/RemoteViews.java
diff options
context:
space:
mode:
authorRyan Mitchell <rtmitchell@google.com>2021-05-13 15:46:34 -0700
committerRyan Mitchell <rtmitchell@google.com>2021-05-18 09:07:58 -0700
commitc54ebba25be71d77a4c0d92dba2f0b32c03a9792 (patch)
tree342ae715c0b88c22db4cfd37aae69cae38ac7ddd /core/java/android/widget/RemoteViews.java
parent969f4ec61b7f6d069726ffcc795d438af7d47f7d (diff)
Deprecate Context#createApplicationContext
If an application caches an ApplicationInfo and uses it to call Context#createApplicationContext, the app will not get the most recent version of the overlays for that application. To make things worse, the LoadedApk stored in ActivityThread#mResourcePackages is updated using the old ApplicationInfo causing further uses of the cached LoadedApk to return outdated information. Deprecate Context#createApplicationContext, convert all internal uses to Context#createPackageContext(String packageName, ...) and log whenever any one calls Context#createApplicationContext with an outdated ApplicationInfo to detect debug issues in using old infos. Bug: 188059515 Test: change wallpaper and observe widgets get reloaded with most recent overlays Change-Id: I2aeefa8c0e66264859109975a54c4f73f76ad710
Diffstat (limited to 'core/java/android/widget/RemoteViews.java')
-rw-r--r--core/java/android/widget/RemoteViews.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index ee7818c1d422..25c84ba9d440 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -5827,8 +5827,9 @@ public class RemoteViews implements Parcelable, Filter {
return context;
}
try {
- return context.createApplicationContext(mApplication,
- Context.CONTEXT_RESTRICTED);
+ return context.createPackageContextAsUser(mApplication.packageName,
+ Context.CONTEXT_RESTRICTED,
+ UserHandle.getUserHandleForUid(mApplication.uid));
} catch (NameNotFoundException e) {
Log.e(LOG_TAG, "Package name " + mApplication.packageName + " not found");
}