Fix manager updating modules list (#47)
This commit is contained in:
parent
97ddb596d3
commit
7aeee8fe9a
|
|
@ -457,28 +457,20 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
|
||||||
|
|
||||||
public boolean onBackPressed() {
|
public boolean onBackPressed() {
|
||||||
if (masterSwitch.isChecked() && checkedList.isEmpty()) {
|
if (masterSwitch.isChecked() && checkedList.isEmpty()) {
|
||||||
|
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(activity);
|
||||||
|
builder.setTitle(R.string.use_recommended);
|
||||||
|
builder.setMessage(hasRecommended() ? R.string.no_scope_selected_has_recommended : R.string.no_scope_selected);
|
||||||
if (hasRecommended()) {
|
if (hasRecommended()) {
|
||||||
new MaterialAlertDialogBuilder(activity)
|
builder.setPositiveButton(android.R.string.ok, (dialog, which) -> checkRecommended());
|
||||||
.setTitle(R.string.use_recommended)
|
|
||||||
.setMessage(R.string.no_scope_selected_has_recommended)
|
|
||||||
.setPositiveButton(android.R.string.ok, (dialog, which) -> checkRecommended())
|
|
||||||
.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
|
|
||||||
ModuleUtil.getInstance().setModuleEnabled(modulePackageName, false);
|
|
||||||
Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, moduleName), Toast.LENGTH_LONG).show();
|
|
||||||
activity.finish();
|
|
||||||
})
|
|
||||||
.show();
|
|
||||||
} else {
|
} else {
|
||||||
new MaterialAlertDialogBuilder(activity)
|
builder.setPositiveButton(android.R.string.cancel, null);
|
||||||
.setMessage(R.string.no_scope_selected)
|
|
||||||
.setPositiveButton(android.R.string.cancel, null)
|
|
||||||
.setNegativeButton(android.R.string.ok, (dialog, which) -> {
|
|
||||||
ModuleUtil.getInstance().setModuleEnabled(modulePackageName, false);
|
|
||||||
Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, moduleName), Toast.LENGTH_LONG).show();
|
|
||||||
activity.finish();
|
|
||||||
})
|
|
||||||
.show();
|
|
||||||
}
|
}
|
||||||
|
builder.setNegativeButton(hasRecommended() ? android.R.string.cancel : android.R.string.ok, (dialog, which) -> {
|
||||||
|
ModuleUtil.getInstance().setModuleEnabled(modulePackageName, false);
|
||||||
|
Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, moduleName), Toast.LENGTH_LONG).show();
|
||||||
|
activity.finish();
|
||||||
|
});
|
||||||
|
builder.show();
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
|
||||||
});
|
});
|
||||||
adapter.addAll(showList);
|
adapter.addAll(showList);
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
moduleUtil.updateModulesList(false);
|
moduleUtil.updateModulesList();
|
||||||
binding.swipeRefreshLayout.setRefreshing(false);
|
binding.swipeRefreshLayout.setRefreshing(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -170,13 +170,6 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSingleInstalledModuleReloaded(ModuleUtil moduleUtil, String packageName, ModuleUtil.InstalledModule module) {
|
public void onSingleInstalledModuleReloaded(ModuleUtil moduleUtil, String packageName, ModuleUtil.InstalledModule module) {
|
||||||
moduleUtil.updateModulesList(false);
|
|
||||||
runOnUiThread(reloadModules);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onInstalledModulesReloaded(ModuleUtil moduleUtil) {
|
|
||||||
moduleUtil.updateModulesList(false);
|
|
||||||
runOnUiThread(reloadModules);
|
runOnUiThread(reloadModules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,9 @@ import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
@ -26,7 +22,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
import io.github.lsposed.manager.App;
|
import io.github.lsposed.manager.App;
|
||||||
import io.github.lsposed.manager.Constants;
|
import io.github.lsposed.manager.Constants;
|
||||||
import io.github.lsposed.manager.R;
|
|
||||||
import io.github.lsposed.manager.adapters.AppHelper;
|
import io.github.lsposed.manager.adapters.AppHelper;
|
||||||
|
|
||||||
public final class ModuleUtil {
|
public final class ModuleUtil {
|
||||||
|
|
@ -35,11 +30,9 @@ public final class ModuleUtil {
|
||||||
private static ModuleUtil instance = null;
|
private static ModuleUtil instance = null;
|
||||||
private final PackageManager pm;
|
private final PackageManager pm;
|
||||||
private final List<ModuleListener> listeners = new CopyOnWriteArrayList<>();
|
private final List<ModuleListener> listeners = new CopyOnWriteArrayList<>();
|
||||||
//private InstalledModule framework = null;
|
|
||||||
private Map<String, InstalledModule> installedModules;
|
private Map<String, InstalledModule> installedModules;
|
||||||
private final List<String> enabledModules;
|
private final List<String> enabledModules;
|
||||||
private boolean isReloading = false;
|
private boolean isReloading = false;
|
||||||
private Toast toast;
|
|
||||||
private final SharedPreferences prefs;
|
private final SharedPreferences prefs;
|
||||||
|
|
||||||
private ModuleUtil() {
|
private ModuleUtil() {
|
||||||
|
|
@ -92,9 +85,6 @@ public final class ModuleUtil {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
isReloading = false;
|
isReloading = false;
|
||||||
}
|
}
|
||||||
for (ModuleListener listener : listeners) {
|
|
||||||
listener.onInstalledModulesReloaded(instance);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public InstalledModule reloadSingleModule(String packageName) {
|
public InstalledModule reloadSingleModule(String packageName) {
|
||||||
|
|
@ -143,9 +133,11 @@ public final class ModuleUtil {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
if (!enabledModules.contains(packageName)) {
|
if (!enabledModules.contains(packageName)) {
|
||||||
enabledModules.add(packageName);
|
enabledModules.add(packageName);
|
||||||
|
updateModulesList();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
enabledModules.remove(packageName);
|
enabledModules.remove(packageName);
|
||||||
|
updateModulesList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -167,58 +159,20 @@ public final class ModuleUtil {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void updateModulesList(boolean showToast) {
|
public synchronized void updateModulesList() {
|
||||||
updateModulesList(showToast, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void updateModulesList(boolean showToast, View view) {
|
|
||||||
try {
|
try {
|
||||||
Log.i(App.TAG, "ModuleUtil -> updating modules.list");
|
Log.i(App.TAG, "ModuleUtil -> updating modules.list");
|
||||||
int installedXposedVersion = Constants.getXposedApiVersion();
|
|
||||||
if (!prefs.getBoolean("skip_xposedminversion_check", false) && installedXposedVersion <= 0 && showToast) {
|
|
||||||
showToast(view, R.string.notinstalled);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PrintWriter modulesList = new PrintWriter(Constants.getModulesListFile());
|
PrintWriter modulesList = new PrintWriter(Constants.getModulesListFile());
|
||||||
PrintWriter enabledModulesList = new PrintWriter(Constants.getEnabledModulesListFile());
|
PrintWriter enabledModulesList = new PrintWriter(Constants.getEnabledModulesListFile());
|
||||||
List<InstalledModule> enabledModules = getEnabledModules();
|
List<InstalledModule> enabledModules = getEnabledModules();
|
||||||
for (InstalledModule module : enabledModules) {
|
for (InstalledModule module : enabledModules) {
|
||||||
|
|
||||||
if (!prefs.getBoolean("skip_xposedminversion_check", false) && (module.minVersion > installedXposedVersion || module.minVersion < MIN_MODULE_VERSION) && showToast) {
|
|
||||||
showToast(view, R.string.notinstalled);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
modulesList.println(module.app.sourceDir);
|
modulesList.println(module.app.sourceDir);
|
||||||
enabledModulesList.println(module.app.packageName);
|
enabledModulesList.println(module.app.packageName);
|
||||||
}
|
}
|
||||||
modulesList.close();
|
modulesList.close();
|
||||||
enabledModulesList.close();
|
enabledModulesList.close();
|
||||||
|
|
||||||
if (showToast) {
|
|
||||||
showToast(view, R.string.xposed_module_list_updated);
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(App.TAG, "ModuleUtil -> cannot write " + Constants.getModulesListFile(), e);
|
Log.e(App.TAG, "ModuleUtil -> cannot write " + Constants.getModulesListFile(), e);
|
||||||
showToast(view, "cannot write " + Constants.getModulesListFile() + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showToast(View view, int message) {
|
|
||||||
showToast(view, App.getInstance().getString(message));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showToast(View view, String message) {
|
|
||||||
if (view != null) {
|
|
||||||
Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show();
|
|
||||||
} else {
|
|
||||||
if (toast != null) {
|
|
||||||
toast.cancel();
|
|
||||||
toast = null;
|
|
||||||
}
|
|
||||||
toast = Toast.makeText(App.getInstance(), message, Toast.LENGTH_SHORT);
|
|
||||||
toast.show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -237,11 +191,6 @@ public final class ModuleUtil {
|
||||||
* reloaded
|
* reloaded
|
||||||
*/
|
*/
|
||||||
void onSingleInstalledModuleReloaded(ModuleUtil moduleUtil, String packageName, InstalledModule module);
|
void onSingleInstalledModuleReloaded(ModuleUtil moduleUtil, String packageName, InstalledModule module);
|
||||||
|
|
||||||
/**
|
|
||||||
* Called whenever all installed modules have been reloaded
|
|
||||||
*/
|
|
||||||
void onInstalledModulesReloaded(ModuleUtil moduleUtil);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InstalledModule {
|
public class InstalledModule {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue