diff --git a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java index 4d982a3e..cf717a39 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/ModulesActivity.java @@ -548,7 +548,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi String updateDate = dateformat.format(new Date(item.updateTime)); holder.timestamps.setText(getString(R.string.install_timestamps, creationDate, updateDate)); - holder.appIcon.setImageBitmap(item.getIcon(ModulesActivity.this)); + holder.appIcon.setImageBitmap(item.getIcon()); TextView descriptionText = holder.appDescription; descriptionText.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/org/meowcat/edxposed/manager/SettingsActivity.java b/app/src/main/java/org/meowcat/edxposed/manager/SettingsActivity.java index 20967ae0..7274e0e3 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/SettingsActivity.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/SettingsActivity.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.os.FileUtils; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; @@ -29,6 +28,7 @@ import com.topjohnwu.superuser.Shell; import org.meowcat.edxposed.manager.adapters.AppHelper; import org.meowcat.edxposed.manager.adapters.BlackListAdapter; import org.meowcat.edxposed.manager.databinding.ActivitySettingsBinding; +import org.meowcat.edxposed.manager.util.FileUtils; import org.meowcat.edxposed.manager.util.RepoLoader; import org.meowcat.edxposed.manager.widget.IntegerListPreference; @@ -137,7 +137,7 @@ public class SettingsActivity extends BaseActivity { if ((Context.MODE_WORLD_READABLE & MODE_WORLD_WRITEABLE) != 0) { perms |= FileUtils.S_IWOTH; } - FileUtils.setPermissions(name, perms, -1, -1); + FileUtils.setPermissions(name, perms); } @SuppressLint({"ObsoleteSdkInt", "WorldReadableFiles"}) diff --git a/app/src/main/java/org/meowcat/edxposed/manager/XposedApp.java b/app/src/main/java/org/meowcat/edxposed/manager/XposedApp.java index ebb932cd..b0ea8959 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/XposedApp.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/XposedApp.java @@ -10,7 +10,6 @@ import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; -import android.os.FileUtils; import android.os.Handler; import android.util.Log; @@ -21,6 +20,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import org.meowcat.edxposed.manager.adapters.AppHelper; import org.meowcat.edxposed.manager.receivers.PackageChangeReceiver; +import org.meowcat.edxposed.manager.util.FileUtils; import org.meowcat.edxposed.manager.util.ModuleUtil; import org.meowcat.edxposed.manager.util.NotificationUtil; import org.meowcat.edxposed.manager.util.RepoLoader; @@ -80,7 +80,7 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem dir = BASE_DIR + dir; //noinspection ResultOfMethodCallIgnored new File(dir).mkdir(); - FileUtils.setPermissions(dir, permissions, -1, -1); + FileUtils.setPermissions(dir, permissions); } public void onCreate() { @@ -170,7 +170,7 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem @SuppressWarnings({"JavaReflectionMemberAccess", "OctalInteger"}) @SuppressLint({"PrivateApi", "NewApi"}) private void createDirectories() { - FileUtils.setPermissions(BASE_DIR, 00777, -1, -1); + FileUtils.setPermissions(BASE_DIR, 00777); mkdirAndChmod("conf", 00777); mkdirAndChmod("log", 00777); @@ -228,7 +228,7 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem } @Override - public synchronized void onActivityPaused(Activity activity) { + public synchronized void onActivityPaused(@NonNull Activity activity) { currentActivity = null; } diff --git a/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppHelper.java b/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppHelper.java index 24093bb6..122cc9f6 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppHelper.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/adapters/AppHelper.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.net.Uri; -import android.os.FileUtils; import android.view.View; import android.widget.Toast; @@ -20,6 +19,7 @@ import org.meowcat.edxposed.manager.BuildConfig; import org.meowcat.edxposed.manager.R; import org.meowcat.edxposed.manager.XposedApp; import org.meowcat.edxposed.manager.util.CompileUtil; +import org.meowcat.edxposed.manager.util.FileUtils; import java.io.BufferedReader; import java.io.File; @@ -180,7 +180,7 @@ public class AppHelper { if ((mode & Context.MODE_WORLD_WRITEABLE) != 0) { perms |= FileUtils.S_IWOTH; } - FileUtils.setPermissions(name, perms, -1, -1); + FileUtils.setPermissions(name, perms); } @SuppressLint("WorldReadableFiles") diff --git a/app/src/main/java/org/meowcat/edxposed/manager/util/FileUtils.java b/app/src/main/java/org/meowcat/edxposed/manager/util/FileUtils.java new file mode 100644 index 00000000..040b2943 --- /dev/null +++ b/app/src/main/java/org/meowcat/edxposed/manager/util/FileUtils.java @@ -0,0 +1,15 @@ +package org.meowcat.edxposed.manager.util; + +public class FileUtils { + + public static final int S_IRUSR = 256; + public static final int S_IWUSR = 128; + public static final int S_IRGRP = 32; + public static final int S_IWGRP = 16; + public static final int S_IROTH = 4; + public static final int S_IWOTH = 2; + + public static void setPermissions(String dir, int permissions) { + android.os.FileUtils.setPermissions(dir, permissions, -1, -1); + } +} diff --git a/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java b/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java index da21b3b8..7a85f5ee 100644 --- a/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java +++ b/app/src/main/java/org/meowcat/edxposed/manager/util/ModuleUtil.java @@ -9,7 +9,6 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Build; -import android.os.FileUtils; import android.util.Log; import android.widget.Toast; @@ -41,7 +40,7 @@ public final class ModuleUtil { private final PackageManager pm; private final String frameworkPackageName; private final List listeners = new CopyOnWriteArrayList<>(); - private SharedPreferences pref; + private final SharedPreferences pref; //private InstalledModule framework = null; private Map installedModules; private boolean isReloading = false; @@ -251,8 +250,8 @@ public final class ModuleUtil { modulesList.close(); enabledModulesList.close(); - FileUtils.setPermissions(MODULES_LIST_FILE, 00664, -1, -1); - FileUtils.setPermissions(XposedApp.ENABLED_MODULES_LIST_FILE, 00664, -1, -1); + FileUtils.setPermissions(MODULES_LIST_FILE, 00664); + FileUtils.setPermissions(XposedApp.ENABLED_MODULES_LIST_FILE, 00664); if (showToast) { if (binding != null) { @@ -316,8 +315,6 @@ public final class ModuleUtil { private String appName; // loaded lazyily private String description; // loaded lazyily - private Drawable.ConstantState iconCache = null; - private InstalledModule(PackageInfo pkg, boolean isFramework) { this.app = pkg.applicationInfo; this.packageName = pkg.packageName; @@ -384,7 +381,7 @@ public final class ModuleUtil { return (version != null) && version.code > versionCode; } - public Bitmap getIcon(Context context) { + public Bitmap getIcon() { return XposedApp.getInstance().getAppIconLoader().loadIcon(app, false); }