diff options
| author | 2018-11-30 16:45:02 +0000 | |
|---|---|---|
| committer | 2018-11-30 16:45:02 +0000 | |
| commit | b25a4d60e6d2178faff99ddfcd7c1541ea5aeadf (patch) | |
| tree | c915b83f5454a26c727bc8deb96e97d9ec92983a | |
| parent | 6fc3189e37b3b57bc7cd42c7920c1efdd9860c9b (diff) | |
| parent | 1c7ae31e97f0d90b16dcbefff9c436601cba7007 (diff) | |
Merge "Nullify the default wallpaper component if it does not exist"
| -rw-r--r-- | core/java/android/app/WallpaperManager.java | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index e7ba2e6be5c2..b8c98420aada 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -1885,23 +1885,33 @@ public class WallpaperManager { * @hide */ public static ComponentName getDefaultWallpaperComponent(Context context) { + ComponentName cn = null; + String flat = SystemProperties.get(PROP_WALLPAPER_COMPONENT); if (!TextUtils.isEmpty(flat)) { - final ComponentName cn = ComponentName.unflattenFromString(flat); - if (cn != null) { - return cn; + cn = ComponentName.unflattenFromString(flat); + } + + if (cn == null) { + flat = context.getString(com.android.internal.R.string.default_wallpaper_component); + if (!TextUtils.isEmpty(flat)) { + cn = ComponentName.unflattenFromString(flat); } } - flat = context.getString(com.android.internal.R.string.default_wallpaper_component); - if (!TextUtils.isEmpty(flat)) { - final ComponentName cn = ComponentName.unflattenFromString(flat); - if (cn != null) { - return cn; + // Check if the package exists + if (cn != null) { + try { + final PackageManager packageManager = context.getPackageManager(); + packageManager.getPackageInfo(cn.getPackageName(), + PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); + } catch (PackageManager.NameNotFoundException e) { + cn = null; } } - return null; + return cn; } /** |