diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 5152a606..e69ea1bd 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -201,9 +201,7 @@ dependencies {
implementation("androidx.recyclerview:recyclerview:1.2.1")
implementation("androidx.slidingpanelayout:slidingpanelayout:1.2.0-alpha03")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
- implementation("com.caverock:androidsvg-aar:1.4")
implementation("com.github.bumptech.glide:glide:$glideVersion")
- implementation("com.github.bumptech.glide:okhttp3-integration:$glideVersion")
implementation("com.google.android.material:material:1.4.0")
implementation("com.google.code.gson:gson:2.8.7")
implementation("com.takisoft.preferencex:preferencex:1.1.0")
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
deleted file mode 100644
index 1837cd55..00000000
Binary files a/app/src/main/ic_launcher-playstore.png and /dev/null differ
diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java
index b40aa11d..362c8813 100644
--- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java
+++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java
@@ -19,6 +19,8 @@
package org.lsposed.manager.ui.fragment;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
import android.os.Build;
import android.os.Bundle;
import android.text.method.LinkMovementMethod;
@@ -42,7 +44,6 @@ import org.lsposed.manager.databinding.FragmentMainBinding;
import org.lsposed.manager.ui.activity.base.BaseActivity;
import org.lsposed.manager.ui.dialog.BlurBehindDialogBuilder;
import org.lsposed.manager.ui.dialog.InfoDialogBuilder;
-import org.lsposed.manager.util.GlideHelper;
import org.lsposed.manager.util.ModuleUtil;
import org.lsposed.manager.util.NavUtil;
import org.lsposed.manager.util.chrome.LinkTransformationMethod;
@@ -56,6 +57,16 @@ public class HomeFragment extends BaseFragment {
private FragmentHomeBinding binding;
private View snackbar;
+ private static PackageInfo wrap(ApplicationInfo applicationInfo, int longVersionCode) {
+ PackageInfo packageInfo = new PackageInfo();
+ packageInfo.applicationInfo = applicationInfo;
+ packageInfo.versionCode = longVersionCode;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ packageInfo.setLongVersionCode(System.currentTimeMillis());
+ }
+ return packageInfo;
+ }
+
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
FragmentMainBinding mainBinding = FragmentMainBinding.inflate(inflater, container, false);
@@ -93,13 +104,13 @@ public class HomeFragment extends BaseFragment {
binding.translators.setMovementMethod(LinkMovementMethod.getInstance());
binding.translators.setTransformationMethod(new LinkTransformationMethod(activity));
binding.translators.setText(HtmlCompat.fromHtml(getString(R.string.about_translators, getString(R.string.translators)), HtmlCompat.FROM_HTML_MODE_LEGACY));
- binding.version.setText(String.format(Locale.US, "%s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE));
+ binding.version.setText(String.format(Locale.US, "LSPosed %s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE));
new BlurBehindDialogBuilder(activity)
.setView(binding.getRoot())
.show();
});
Glide.with(binding.appIcon)
- .load(GlideHelper.wrapApplicationInfoForIconLoader(activity.getApplicationInfo()))
+ .load(wrap(activity.getApplicationInfo(), getResources().getConfiguration().hashCode()))
.into(binding.appIcon);
String installXposedVersion = ConfigManager.getXposedVersionName();
int cardBackgroundColor;
diff --git a/app/src/main/java/org/lsposed/manager/util/AppModule.java b/app/src/main/java/org/lsposed/manager/util/AppModule.java
index dabfe943..98805f46 100644
--- a/app/src/main/java/org/lsposed/manager/util/AppModule.java
+++ b/app/src/main/java/org/lsposed/manager/util/AppModule.java
@@ -23,41 +23,29 @@ package org.lsposed.manager.util;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.graphics.Bitmap;
-import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
-import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader;
-import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.module.AppGlideModule;
-import com.caverock.androidsvg.SVG;
-import org.lsposed.manager.App;
import org.lsposed.manager.R;
-import org.lsposed.manager.util.svg.ExternalFileResolver;
-import org.lsposed.manager.util.svg.SvgDecoder;
-import org.lsposed.manager.util.svg.SvgDrawableTranscoder;
-
-import java.io.InputStream;
import me.zhanghai.android.appiconloader.glide.AppIconModelLoader;
@GlideModule
public class AppModule extends AppGlideModule {
+ @Override
+ public boolean isManifestParsingEnabled() {
+ return false;
+ }
+
@Override
public void registerComponents(Context context, @NonNull Glide glide, Registry registry) {
int iconSize = context.getResources().getDimensionPixelSize(R.dimen.app_icon_size);
- registry.prepend(PackageInfo.class, Bitmap.class, new AppIconModelLoader.Factory(iconSize,
- context.getApplicationInfo().loadIcon(context.getPackageManager()) instanceof AdaptiveIconDrawable, context));
- OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(App.getOkHttpClient());
- registry.replace(GlideUrl.class, InputStream.class, factory);
- SVG.registerExternalFileResolver(new ExternalFileResolver());
- registry.register(SVG.class, Drawable.class, new SvgDrawableTranscoder(context))
- .append(InputStream.class, SVG.class, new SvgDecoder());
+ var factory = new AppIconModelLoader.Factory(iconSize, true, context);
+ registry.prepend(PackageInfo.class, Bitmap.class, factory);
}
}
-
diff --git a/app/src/main/java/org/lsposed/manager/util/GlideHelper.java b/app/src/main/java/org/lsposed/manager/util/GlideHelper.java
deleted file mode 100644
index 28a6f4e8..00000000
--- a/app/src/main/java/org/lsposed/manager/util/GlideHelper.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * This file is part of LSPosed.
- *
- * LSPosed is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * LSPosed is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with LSPosed. If not, see .
- *
- * Copyright (C) 2020 EdXposed Contributors
- * Copyright (C) 2021 LSPosed Contributors
- */
-
-package org.lsposed.manager.util;
-
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-
-public class GlideHelper {
- public static PackageInfo wrapApplicationInfoForIconLoader(ApplicationInfo applicationInfo) {
- PackageInfo packageInfo = new PackageInfo();
- packageInfo.applicationInfo = applicationInfo;
- return packageInfo;
- }
-}
diff --git a/app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java b/app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java
deleted file mode 100644
index 1da60ba8..00000000
--- a/app/src/main/java/org/lsposed/manager/util/svg/ExternalFileResolver.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * This file is part of LSPosed.
- *
- * LSPosed is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * LSPosed is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with LSPosed. If not, see .
- *
- * Copyright (C) 2021 LSPosed Contributors
- */
-
-package org.lsposed.manager.util.svg;
-
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Picture;
-import android.util.Base64;
-
-import com.caverock.androidsvg.SVG;
-import com.caverock.androidsvg.SVGExternalFileResolver;
-
-public class ExternalFileResolver extends SVGExternalFileResolver {
- @Override
- public Bitmap resolveImage(String filename) {
- if (filename.startsWith("data:image/svg+xml;base64,")) {
- // com.shatyuka.zhiliao
- try {
- String base64 = filename.substring(filename.indexOf(","));
- SVG svg = SVG.getFromString(new String(Base64.decode(base64, Base64.DEFAULT)));
- float width = svg.getDocumentWidth();
- float height = svg.getDocumentHeight();
- Bitmap bitmap;
- if (width > 0 && height > 0) {
- bitmap = Bitmap.createBitmap(Math.round(width), Math.round(width), Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(bitmap);
- svg.renderToCanvas(canvas);
- } else {
- Picture picture = svg.renderToPicture();
- bitmap = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(bitmap);
- canvas.drawPicture(picture);
- }
- return bitmap;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return super.resolveImage(filename);
- }
-}
diff --git a/app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java b/app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java
deleted file mode 100644
index a1ae9076..00000000
--- a/app/src/main/java/org/lsposed/manager/util/svg/SvgDecoder.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * This file is part of LSPosed.
- *
- * LSPosed is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * LSPosed is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with LSPosed. If not, see .
- *
- * Copyright (C) 2021 LSPosed Contributors
- */
-
-package org.lsposed.manager.util.svg;
-
-import static com.bumptech.glide.request.target.Target.SIZE_ORIGINAL;
-
-import androidx.annotation.NonNull;
-
-import com.bumptech.glide.load.Options;
-import com.bumptech.glide.load.ResourceDecoder;
-import com.bumptech.glide.load.engine.Resource;
-import com.bumptech.glide.load.resource.SimpleResource;
-import com.caverock.androidsvg.SVG;
-import com.caverock.androidsvg.SVGParseException;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Decodes an SVG internal representation from an {@link InputStream}.
- */
-public class SvgDecoder implements ResourceDecoder {
-
- @Override
- public boolean handles(@NonNull InputStream source, @NonNull Options options) {
- // TODO: Can we tell?
- return true;
- }
-
- public Resource