[app] Fix clear logs

This commit is contained in:
tehcneko 2021-02-17 20:20:33 +08:00
parent 10de0b0ac6
commit 7d08851aae
7 changed files with 57 additions and 66 deletions

View File

@ -22,6 +22,7 @@ package io.github.lsposed.manager;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -34,8 +35,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.getXposedApiVersion(); return LSPosedManagerServiceClient.getXposedApiVersion();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return -1; return -1;
} }
} }
@ -44,8 +44,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.getXposedVersionName(); return LSPosedManagerServiceClient.getXposedVersionName();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return null; return null;
} }
} }
@ -54,8 +53,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.getXposedVersionCode(); return LSPosedManagerServiceClient.getXposedVersionCode();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return -1; return -1;
} }
} }
@ -65,8 +63,7 @@ public class ConfigManager {
try { try {
list.addAll(LSPosedManagerServiceClient.getInstalledPackagesFromAllUsers(flags)); list.addAll(LSPosedManagerServiceClient.getInstalledPackagesFromAllUsers(flags));
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
} }
return list; return list;
} }
@ -75,8 +72,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.enabledModules(); return LSPosedManagerServiceClient.enabledModules();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return new String[0]; return new String[0];
} }
} }
@ -85,8 +81,7 @@ public class ConfigManager {
try { try {
return enable ? LSPosedManagerServiceClient.enableModule(packageName) : LSPosedManagerServiceClient.disableModule(packageName); return enable ? LSPosedManagerServiceClient.enableModule(packageName) : LSPosedManagerServiceClient.disableModule(packageName);
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -99,8 +94,7 @@ public class ConfigManager {
} }
return LSPosedManagerServiceClient.setModuleScope(packageName, uids); return LSPosedManagerServiceClient.setModuleScope(packageName, uids);
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -112,8 +106,7 @@ public class ConfigManager {
list.add(uid); list.add(uid);
} }
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
} }
return list; return list;
} }
@ -122,8 +115,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.isResourceHook(); return LSPosedManagerServiceClient.isResourceHook();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -133,8 +125,7 @@ public class ConfigManager {
LSPosedManagerServiceClient.setResourceHook(enabled); LSPosedManagerServiceClient.setResourceHook(enabled);
return true; return true;
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -143,8 +134,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.isVerboseLog(); return LSPosedManagerServiceClient.isVerboseLog();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -154,8 +144,7 @@ public class ConfigManager {
LSPosedManagerServiceClient.setVerboseLog(enabled); LSPosedManagerServiceClient.setVerboseLog(enabled);
return true; return true;
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -164,8 +153,7 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.getVariant(); return LSPosedManagerServiceClient.getVariant();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return 1; return 1;
} }
} }
@ -187,8 +175,7 @@ public class ConfigManager {
LSPosedManagerServiceClient.setVariant(variant); LSPosedManagerServiceClient.setVariant(variant);
return true; return true;
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return false; return false;
} }
} }
@ -197,29 +184,26 @@ public class ConfigManager {
try { try {
return LSPosedManagerServiceClient.isPermissive(); return LSPosedManagerServiceClient.isPermissive();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return true; return true;
} }
} }
public static ParcelFileDescriptor getVerboseLog() { public static ParcelFileDescriptor getLogs(boolean verbose) {
try { try {
return LSPosedManagerServiceClient.getVerboseLog(); return verbose ? LSPosedManagerServiceClient.getVerboseLog() : LSPosedManagerServiceClient.getModulesLog();
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace();
return null; return null;
} }
} }
public static ParcelFileDescriptor getModulesLog() { public static boolean clearLogs(boolean verbose) {
try { try {
return LSPosedManagerServiceClient.getModulesLog(); return LSPosedManagerServiceClient.clearLogs(verbose);
} catch (RemoteException | NullPointerException e) { } catch (RemoteException | NullPointerException e) {
// TODO: Log.e(App.TAG, Log.getStackTraceString(e));
e.printStackTrace(); return false;
return null;
} }
} }
} }

View File

@ -119,4 +119,9 @@ public class LSPosedManagerServiceClient {
ensureService(); ensureService();
return service.getModulesLog(); return service.getModulesLog();
} }
public static boolean clearLogs(boolean verbose) throws RemoteException, NullPointerException {
ensureService();
return service.clearLogs(verbose);
}
} }

View File

@ -28,7 +28,6 @@ import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -76,7 +75,7 @@ import rikka.recyclerview.RecyclerViewKt;
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
public class LogsActivity extends BaseActivity { public class LogsActivity extends BaseActivity {
private int logType = 0; private boolean verbose = false;
private LogsAdapter adapter; private LogsAdapter adapter;
private final Handler handler = new Handler(Looper.getMainLooper()); private final Handler handler = new Handler(Looper.getMainLooper());
private ActivityLogsBinding binding; private ActivityLogsBinding binding;
@ -96,7 +95,7 @@ public class LogsActivity extends BaseActivity {
if (os == null) { if (os == null) {
return; return;
} }
ParcelFileDescriptor parcelFileDescriptor = getLogFile(); ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose);
if (parcelFileDescriptor == null) { if (parcelFileDescriptor == null) {
return; 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 @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -160,7 +149,7 @@ public class LogsActivity extends BaseActivity {
binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override @Override
public void onTabSelected(TabLayout.Tab tab) { public void onTabSelected(TabLayout.Tab tab) {
logType = tab.getPosition(); verbose = tab.getPosition() == 1;
reloadErrorLog(); reloadErrorLog();
} }
@ -192,7 +181,6 @@ public class LogsActivity extends BaseActivity {
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId(); int itemId = item.getItemId();
if (itemId == R.id.menu_scroll_top) { if (itemId == R.id.menu_scroll_top) {
Log.e("Test", adapter.getItemCount() + "");
if (layoutManager.findFirstVisibleItemPosition() > 1000) { if (layoutManager.findFirstVisibleItemPosition() > 1000) {
binding.recyclerView.scrollToPosition(0); binding.recyclerView.scrollToPosition(0);
} else { } else {
@ -226,30 +214,24 @@ public class LogsActivity extends BaseActivity {
} }
private void reloadErrorLog() { private void reloadErrorLog() {
ParcelFileDescriptor parcelFileDescriptor = getLogFile(); ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose);
if (parcelFileDescriptor != null) { if (parcelFileDescriptor != null) {
new LogsReader().execute(parcelFileDescriptor.getFileDescriptor()); new LogsReader().execute(parcelFileDescriptor.getFileDescriptor());
} }
} }
private void clear() { private void clear() {
try { if (ConfigManager.clearLogs(verbose)) {
ParcelFileDescriptor parcelFileDescriptor = getLogFile();
if (parcelFileDescriptor == null) {
return;
}
OutputStream os = new FileOutputStream(parcelFileDescriptor.getFileDescriptor());
os.close();
adapter.setEmpty(); adapter.setEmpty();
Snackbar.make(binding.snackbar, R.string.logs_cleared, Snackbar.LENGTH_SHORT).show(); Snackbar.make(binding.snackbar, R.string.logs_cleared, Snackbar.LENGTH_SHORT).show();
reloadErrorLog(); reloadErrorLog();
} catch (IOException e) { } else {
Snackbar.make(binding.snackbar, getResources().getString(R.string.logs_clear_failed) + "n" + e.getMessage(), Snackbar.LENGTH_LONG).show(); Snackbar.make(binding.snackbar, R.string.logs_clear_failed_2, Snackbar.LENGTH_SHORT).show();
} }
} }
private void send() { private void send() {
ParcelFileDescriptor parcelFileDescriptor = getLogFile(); ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose);
if (parcelFileDescriptor == null) { if (parcelFileDescriptor == null) {
return; return;
} }

View File

@ -74,7 +74,6 @@
<string name="logs_save_failed">Failed to save:</string> <string name="logs_save_failed">Failed to save:</string>
<string name="menuClearLog">Clear log now</string> <string name="menuClearLog">Clear log now</string>
<string name="logs_cleared">Log successfully cleared.</string> <string name="logs_cleared">Log successfully cleared.</string>
<string name="logs_clear_failed">Could not clear the log:</string>
<string name="log_is_empty">Log is empty.</string> <string name="log_is_empty">Log is empty.</string>
<!-- About tab --> <!-- About tab -->
@ -172,4 +171,5 @@
<string name="module_release_load_more">Show older versions</string> <string name="module_release_load_more">Show older versions</string>
<string name="module_release_no_more">No more release</string> <string name="module_release_no_more">No more release</string>
<string name="theme_color">Theme color</string> <string name="theme_color">Theme color</string>
<string name="logs_clear_failed_2">Could not clear the log</string>
</resources> </resources>

View File

@ -15,7 +15,9 @@ import androidx.annotation.Nullable;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.StandardOpenOption; import java.nio.file.StandardOpenOption;
import java.util.ArrayList; 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) { public boolean isManager(String package_name) {
return package_name.equals(manager); return package_name.equals(manager);
} }

View File

@ -113,4 +113,9 @@ public class LSPManagerService extends ILSPManagerService.Stub {
public ParcelFileDescriptor getModulesLog() { public ParcelFileDescriptor getModulesLog() {
return ConfigManager.getInstance().getModulesLog(); return ConfigManager.getInstance().getModulesLog();
} }
@Override
public boolean clearLogs(boolean verbose) {
return ConfigManager.getInstance().clearLogs(verbose);
}
} }

View File

@ -38,4 +38,6 @@ interface ILSPManagerService {
String getXposedVersionName() = 19; String getXposedVersionName() = 19;
int getXposedApiVersion() = 20; int getXposedApiVersion() = 20;
boolean clearLogs(boolean verbose) = 21;
} }