From f0838f528a2b185e837deeb3988718e4c4ca89d6 Mon Sep 17 00:00:00 2001 From: tverona1 Date: Sun, 15 Dec 2019 13:36:45 -0800 Subject: [PATCH] Fix loading VectorDrawable icons Fix loading VectorDrawable icons --- Assets/Plugins/Android/AppInfo.java | 28 ++++++++++++++++++++++------ Assets/Scripts/AppEntry.cs | 6 ++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Assets/Plugins/Android/AppInfo.java b/Assets/Plugins/Android/AppInfo.java index 422eaa5..a50fe04 100644 --- a/Assets/Plugins/Android/AppInfo.java +++ b/Assets/Plugins/Android/AppInfo.java @@ -31,6 +31,8 @@ import android.util.Log; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.Canvas; import android.graphics.Color; import java.util.List; import java.util.LinkedList; @@ -119,12 +121,26 @@ public class AppInfo extends UnityPlayerActivity { } public byte[] getIcon(int i) { - BitmapDrawable icon = (BitmapDrawable)this.getPackageManager().getApplicationIcon(installedApps.get(i).app); - Bitmap bmp = icon.getBitmap(); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream); - byte[] byteArray = stream.toByteArray(); - return byteArray; + try { + Drawable drawable = this.getPackageManager().getApplicationIcon(installedApps.get(i).app); + Bitmap bmp = null; + if (drawable instanceof BitmapDrawable) { + bmp = ((BitmapDrawable)drawable).getBitmap(); + } else { + bmp = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + final Canvas canvas = new Canvas(bmp); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + } + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream); + byte[] byteArray = stream.toByteArray(); + return byteArray; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; } public boolean hasUsageStatsPermissions() { diff --git a/Assets/Scripts/AppEntry.cs b/Assets/Scripts/AppEntry.cs index 9d403a9..5b7ad4a 100644 --- a/Assets/Scripts/AppEntry.cs +++ b/Assets/Scripts/AppEntry.cs @@ -106,6 +106,12 @@ namespace QuestAppLauncher Texture2D texture = null; + if (null == image) + { + Debug.LogFormat("Error loading icon: Path: {0}, Index: {1}", this.externalIconPath, this.installedApkIndex); + return; + } + // Set the icon image if (imageWidth == 0 || imageHeight == 0) {