[6.0.0][crash] 修正因LancetX代理TextView#setText引起的NPE,并给出错误堆栈警告

This commit is contained in:
renwj
2023-08-23 10:22:21 +08:00
parent 9792c7557e
commit 8a0f83aae7

View File

@@ -20,6 +20,18 @@ public class TextViewOpt {
@TargetMethod(methodName = "setText")
@ReplaceInvoke
public static void setText(TextView view, CharSequence text) {
if (view == null) {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
StringBuilder sb = new StringBuilder();
for (StackTraceElement trace : stackTrace) {
sb.append(trace.getClassName()).append(".").append(trace.getMethodName()).append("(").append(trace.getLineNumber()).append(")").append("\n");
}
if (sb.length() > 1) {
sb.setLength(sb.length() - 1);
}
Log.e("ALERT", sb.toString());
return;
}
if (Looper.myLooper() != Looper.getMainLooper()) {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
StringBuilder sb = new StringBuilder();