diff --git a/app/src/main/assets/ic_launcher-playstore.png b/app/src/main/assets/ic_launcher-playstore.png new file mode 100644 index 00000000..864a9c3d Binary files /dev/null and b/app/src/main/assets/ic_launcher-playstore.png differ diff --git a/core/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java b/core/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java index 58fd7139..63bc3f88 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ConfigFileManager.java @@ -47,7 +47,7 @@ import java.util.zip.ZipFile; public class ConfigFileManager { static final Path basePath = Paths.get("/data/adb/lspd"); - private static final Path managerApkPath = basePath.resolve("manager.apk"); + static final Path managerApkPath = basePath.resolve("manager.apk"); private static final Path lockPath = basePath.resolve("lock"); private static final Path configDirPath = basePath.resolve("config"); static final File dbPath = configDirPath.resolve("modules_config.db").toFile(); diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java index 0f43a756..d8a87d7c 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java @@ -39,8 +39,7 @@ import android.content.pm.ResolveInfo; import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; import android.content.pm.VersionedPackage; -import android.graphics.Bitmap; -import android.graphics.Canvas; +import android.graphics.BitmapFactory; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Build; @@ -75,6 +74,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.TimeUnit; +import java.util.zip.ZipFile; import de.robv.android.xposed.XposedBridge; import hidden.HiddenApiBridge; @@ -157,24 +157,16 @@ public class LSPManagerService extends ILSPManagerService.Stub { LSPManagerService() { } - private static Icon getIcon(int res) { - var icon = ConfigFileManager.getResources().getDrawable(res, ConfigFileManager.getResources().newTheme()); - var bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); - icon.draw(new Canvas(bitmap)); - return Icon.createWithBitmap(bitmap); - } - private static Icon getManagerIcon() { - try { - return getIcon(org.lsposed.manager.R.mipmap.ic_launcher); + try (var zip = new ZipFile(ConfigFileManager.managerApkPath.toString())) { + var entry = zip.getEntry("assets/ic_launcher-playstore.png"); + try (var is = zip.getInputStream(entry)) { + return Icon.createWithBitmap(BitmapFactory.decodeStream(is)); + } } catch (Throwable e) { - return getIcon(org.lsposed.manager.R.drawable.ic_launcher); + Log.e(TAG, "load icon", e); } - } - - private static Icon getNotificationIcon() { - return getIcon(org.lsposed.manager.R.drawable.ic_extension); + return null; } static Intent getManagerIntent() { @@ -240,7 +232,7 @@ public class LSPManagerService extends ILSPManagerService.Stub { var notification = new Notification.Builder(context, CHANNEL_ID) .setContentTitle(title) .setContentText(content) - .setSmallIcon(getNotificationIcon()) + .setSmallIcon(android.R.drawable.ic_dialog_info) .setColor(context.getResources().getColor(org.lsposed.manager.R.color.color_primary)) .setContentIntent(getNotificationIntent(modulePackageName, moduleUserId)) .setAutoCancel(true)