diff --git a/app/src/main/java/io/github/lsposed/manager/ConfigManager.java b/app/src/main/java/io/github/lsposed/manager/ConfigManager.java index bcbcc0ca..9cb542dd 100644 --- a/app/src/main/java/io/github/lsposed/manager/ConfigManager.java +++ b/app/src/main/java/io/github/lsposed/manager/ConfigManager.java @@ -22,6 +22,7 @@ package io.github.lsposed.manager; import android.content.pm.PackageInfo; import android.os.ParcelFileDescriptor; import android.os.RemoteException; +import android.util.Log; import java.util.ArrayList; import java.util.List; @@ -34,8 +35,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.getXposedApiVersion(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return -1; } } @@ -44,8 +44,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.getXposedVersionName(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return null; } } @@ -54,8 +53,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.getXposedVersionCode(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return -1; } } @@ -65,8 +63,7 @@ public class ConfigManager { try { list.addAll(LSPosedManagerServiceClient.getInstalledPackagesFromAllUsers(flags)); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); } return list; } @@ -75,8 +72,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.enabledModules(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return new String[0]; } } @@ -85,8 +81,7 @@ public class ConfigManager { try { return enable ? LSPosedManagerServiceClient.enableModule(packageName) : LSPosedManagerServiceClient.disableModule(packageName); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -99,8 +94,7 @@ public class ConfigManager { } return LSPosedManagerServiceClient.setModuleScope(packageName, uids); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -112,8 +106,7 @@ public class ConfigManager { list.add(uid); } } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); } return list; } @@ -122,8 +115,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.isResourceHook(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -133,8 +125,7 @@ public class ConfigManager { LSPosedManagerServiceClient.setResourceHook(enabled); return true; } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -143,8 +134,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.isVerboseLog(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -154,8 +144,7 @@ public class ConfigManager { LSPosedManagerServiceClient.setVerboseLog(enabled); return true; } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -164,8 +153,7 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.getVariant(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return 1; } } @@ -187,8 +175,7 @@ public class ConfigManager { LSPosedManagerServiceClient.setVariant(variant); return true; } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return false; } } @@ -197,29 +184,26 @@ public class ConfigManager { try { return LSPosedManagerServiceClient.isPermissive(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return true; } } - public static ParcelFileDescriptor getVerboseLog() { + public static ParcelFileDescriptor getLogs(boolean verbose) { try { - return LSPosedManagerServiceClient.getVerboseLog(); + return verbose ? LSPosedManagerServiceClient.getVerboseLog() : LSPosedManagerServiceClient.getModulesLog(); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); + Log.e(App.TAG, Log.getStackTraceString(e)); return null; } } - public static ParcelFileDescriptor getModulesLog() { + public static boolean clearLogs(boolean verbose) { try { - return LSPosedManagerServiceClient.getModulesLog(); + return LSPosedManagerServiceClient.clearLogs(verbose); } catch (RemoteException | NullPointerException e) { - // TODO: - e.printStackTrace(); - return null; + Log.e(App.TAG, Log.getStackTraceString(e)); + return false; } } } diff --git a/app/src/main/java/io/github/lsposed/manager/receivers/LSPosedManagerServiceClient.java b/app/src/main/java/io/github/lsposed/manager/receivers/LSPosedManagerServiceClient.java index 5bf58da9..3053af67 100644 --- a/app/src/main/java/io/github/lsposed/manager/receivers/LSPosedManagerServiceClient.java +++ b/app/src/main/java/io/github/lsposed/manager/receivers/LSPosedManagerServiceClient.java @@ -119,4 +119,9 @@ public class LSPosedManagerServiceClient { ensureService(); return service.getModulesLog(); } + + public static boolean clearLogs(boolean verbose) throws RemoteException, NullPointerException { + ensureService(); + return service.clearLogs(verbose); + } } diff --git a/app/src/main/java/io/github/lsposed/manager/ui/activity/LogsActivity.java b/app/src/main/java/io/github/lsposed/manager/ui/activity/LogsActivity.java index 6d63e210..d20337c1 100644 --- a/app/src/main/java/io/github/lsposed/manager/ui/activity/LogsActivity.java +++ b/app/src/main/java/io/github/lsposed/manager/ui/activity/LogsActivity.java @@ -28,7 +28,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.ParcelFileDescriptor; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -76,7 +75,7 @@ import rikka.recyclerview.RecyclerViewKt; @SuppressLint("NotifyDataSetChanged") public class LogsActivity extends BaseActivity { - private int logType = 0; + private boolean verbose = false; private LogsAdapter adapter; private final Handler handler = new Handler(Looper.getMainLooper()); private ActivityLogsBinding binding; @@ -96,7 +95,7 @@ public class LogsActivity extends BaseActivity { if (os == null) { return; } - ParcelFileDescriptor parcelFileDescriptor = getLogFile(); + ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose); if (parcelFileDescriptor == null) { return; } @@ -111,16 +110,6 @@ public class LogsActivity extends BaseActivity { } }); - private ParcelFileDescriptor getLogFile() { - switch (logType) { - case 0: - default: - return ConfigManager.getModulesLog(); - case 1: - return ConfigManager.getVerboseLog(); - } - } - @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -160,7 +149,7 @@ public class LogsActivity extends BaseActivity { binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { - logType = tab.getPosition(); + verbose = tab.getPosition() == 1; reloadErrorLog(); } @@ -192,7 +181,6 @@ public class LogsActivity extends BaseActivity { public boolean onOptionsItemSelected(@NonNull MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.menu_scroll_top) { - Log.e("Test", adapter.getItemCount() + ""); if (layoutManager.findFirstVisibleItemPosition() > 1000) { binding.recyclerView.scrollToPosition(0); } else { @@ -226,30 +214,24 @@ public class LogsActivity extends BaseActivity { } private void reloadErrorLog() { - ParcelFileDescriptor parcelFileDescriptor = getLogFile(); + ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose); if (parcelFileDescriptor != null) { new LogsReader().execute(parcelFileDescriptor.getFileDescriptor()); } } private void clear() { - try { - ParcelFileDescriptor parcelFileDescriptor = getLogFile(); - if (parcelFileDescriptor == null) { - return; - } - OutputStream os = new FileOutputStream(parcelFileDescriptor.getFileDescriptor()); - os.close(); + if (ConfigManager.clearLogs(verbose)) { adapter.setEmpty(); Snackbar.make(binding.snackbar, R.string.logs_cleared, Snackbar.LENGTH_SHORT).show(); reloadErrorLog(); - } catch (IOException e) { - Snackbar.make(binding.snackbar, getResources().getString(R.string.logs_clear_failed) + "n" + e.getMessage(), Snackbar.LENGTH_LONG).show(); + } else { + Snackbar.make(binding.snackbar, R.string.logs_clear_failed_2, Snackbar.LENGTH_SHORT).show(); } } private void send() { - ParcelFileDescriptor parcelFileDescriptor = getLogFile(); + ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose); if (parcelFileDescriptor == null) { return; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4d2c1620..4f7a4f81 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -74,7 +74,6 @@ Failed to save: Clear log now Log successfully cleared. - Could not clear the log: Log is empty. @@ -172,4 +171,5 @@ Show older versions No more release Theme color + Could not clear the log diff --git a/core/src/main/java/io/github/lsposed/lspd/service/ConfigManager.java b/core/src/main/java/io/github/lsposed/lspd/service/ConfigManager.java index 224054b0..b36b09c3 100644 --- a/core/src/main/java/io/github/lsposed/lspd/service/ConfigManager.java +++ b/core/src/main/java/io/github/lsposed/lspd/service/ConfigManager.java @@ -15,7 +15,9 @@ import androidx.annotation.Nullable; import java.io.File; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.ArrayList; @@ -383,6 +385,17 @@ public class ConfigManager { } } + public boolean clearLogs(boolean verbose) { + try { + OutputStream os = new FileOutputStream(verbose ? verboseLogPath : modulesLogPath); + os.close(); + return true; + } catch (IOException e) { + Log.e(TAG, Log.getStackTraceString(e)); + return false; + } + } + public boolean isManager(String package_name) { return package_name.equals(manager); } diff --git a/core/src/main/java/io/github/lsposed/lspd/service/LSPManagerService.java b/core/src/main/java/io/github/lsposed/lspd/service/LSPManagerService.java index 7258599a..6f8e5aaf 100644 --- a/core/src/main/java/io/github/lsposed/lspd/service/LSPManagerService.java +++ b/core/src/main/java/io/github/lsposed/lspd/service/LSPManagerService.java @@ -113,4 +113,9 @@ public class LSPManagerService extends ILSPManagerService.Stub { public ParcelFileDescriptor getModulesLog() { return ConfigManager.getInstance().getModulesLog(); } + + @Override + public boolean clearLogs(boolean verbose) { + return ConfigManager.getInstance().clearLogs(verbose); + } } diff --git a/manager-service/src/main/aidl/io/github/lsposed/lspd/ILSPManagerService.aidl b/manager-service/src/main/aidl/io/github/lsposed/lspd/ILSPManagerService.aidl index 618c0ab7..b3ad3f4f 100644 --- a/manager-service/src/main/aidl/io/github/lsposed/lspd/ILSPManagerService.aidl +++ b/manager-service/src/main/aidl/io/github/lsposed/lspd/ILSPManagerService.aidl @@ -38,4 +38,6 @@ interface ILSPManagerService { String getXposedVersionName() = 19; int getXposedApiVersion() = 20; + + boolean clearLogs(boolean verbose) = 21; }