Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f48d97c authored by Vincent Wang's avatar Vincent Wang Committed by Android (Google) Code Review
Browse files

Merge "Skip reset wallpaper operation if users have changed wallpaper" into tm-dev

parents 293ac013 f2a14ca2
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -16,13 +16,17 @@

package com.android.server;

import android.annotation.RequiresPermission;
import android.app.ActivityThread;
import android.app.WallpaperInfo;
import android.app.WallpaperManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.ParcelFileDescriptor;
import android.util.Slog;

/**
@@ -50,6 +54,10 @@ public class WallpaperUpdateReceiver extends BroadcastReceiver {
            ActivityThread currentActivityThread = ActivityThread.currentActivityThread();
            Context uiContext = currentActivityThread.getSystemUiContext();
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(uiContext);
            if (isUserSetWallpaper(wallpaperManager, uiContext)) {
                Slog.i(TAG, "User has set wallpaper, skip to resetting");
                return;
            }
            if (DEBUG) Slog.d(TAG, "Set customized default_wallpaper.");
            Bitmap blank = Bitmap.createBitmap(1, 1, Bitmap.Config.ALPHA_8);
            // set a blank wallpaper to force a redraw of default_wallpaper
@@ -59,4 +67,32 @@ public class WallpaperUpdateReceiver extends BroadcastReceiver {
            Slog.w(TAG, "Failed to customize system wallpaper." + e);
        }
    }

    /**
     * A function to validate if users have set customized (live)wallpaper
     * <p>
     * return true if users have customized their wallpaper
     **/
    @RequiresPermission(android.Manifest.permission.READ_WALLPAPER_INTERNAL)
    private boolean isUserSetWallpaper(WallpaperManager wm, Context context) {
        WallpaperInfo info = wm.getWallpaperInfo();
        if (info == null) {
            //Image Wallpaper
            ParcelFileDescriptor sysWallpaper =
                    wm.getWallpaperFile(WallpaperManager.FLAG_SYSTEM);
            ParcelFileDescriptor lockWallpaper =
                    wm.getWallpaperFile(WallpaperManager.FLAG_LOCK);
            if (sysWallpaper != null || lockWallpaper != null) {
                return true;
            }
        } else {
            //live wallpaper
            ComponentName currCN = info.getComponent();
            ComponentName defaultCN = WallpaperManager.getDefaultWallpaperComponent(context);
            if (!currCN.equals(defaultCN)) {
                return true;
            }
        }
        return false;
    }
}