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

Commit 8dc6e1bf authored by Adam Cohen's avatar Adam Cohen
Browse files

Fix SecurityException when exiting wallpaper picker early

issue 16155967

Change-Id: Iba1add737089b73e6e5bbfb143dce4204fa9dc7c
parent 260065ca
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -840,12 +840,26 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
        final Context context = this;
        new AsyncTask<Void, Bitmap, Bitmap>() {
            protected Bitmap doInBackground(Void...args) {
                try {
                    int rotation = WallpaperCropActivity.getRotationFromExif(context, uri);
                    return createThumbnail(defaultSize, context, uri, null, null, 0, rotation, false);

                } catch (SecurityException securityException) {
                    if (isDestroyed()) {
                        // Temporarily granted permissions are revoked when the activity
                        // finishes, potentially resulting in a SecurityException here.
                        // Even though {@link #isDestroyed} might also return true in different
                        // situations where the configuration changes, we are fine with
                        // catching these cases here as well.
                        cancel(false);
                    } else {
                        // otherwise it had a different cause and we throw it further
                        throw securityException;
                    }
                    return null;
                }
            }
            protected void onPostExecute(Bitmap thumb) {
                if (thumb != null) {
                if (!isCancelled() && thumb != null) {
                    image.setImageBitmap(thumb);
                    Drawable thumbDrawable = image.getDrawable();
                    thumbDrawable.setDither(true);