Catch exception when parsing faulty AVD

If an application uses an animated vector drawable for its splashsreen
but the files generates an error (like a target not found for the
animation), we catch it and log it instead of crashing sysui

Test: manual, created an AVD with a <target> tag referencing a non
exising group in the dawable
Fixes: 201274348

Change-Id: Ia195b8a626ed4bcad41ffad0e05871b5a632c8df
This commit is contained in:
Vadim Caen
2021-09-29 12:05:46 +00:00
parent b739e83401
commit bb8c33e73e

View File

@@ -38,6 +38,7 @@ import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Trace;
import android.util.Log;
import android.util.PathParser;
import android.window.SplashScreenView;
@@ -50,6 +51,8 @@ import com.android.internal.R;
*/
public class SplashscreenIconDrawableFactory {
private static final String TAG = "SplashscreenIconDrawableFactory";
/**
* @return An array containing the foreground drawable at index 0 and if needed a background
* drawable at index 1.
@@ -282,7 +285,12 @@ public class SplashscreenIconDrawableFactory {
if (startListener != null) {
startListener.run();
}
mAnimatableIcon.start();
try {
mAnimatableIcon.start();
} catch (Exception ex) {
Log.e(TAG, "Error while running the splash screen animated icon", ex);
animation.cancel();
}
}
@Override