From 237dbe0f502ccfcdc4a0a150d96d8dd2d6887b1e Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Tue, 20 Nov 2018 20:49:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=BF=87=E5=A4=A7=E6=97=B6=E5=B4=A9=E6=BA=83?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autojs/autojs/build/ApkBuilder.java | 12 ++++---- .../autojs/storage/file/TmpScriptFiles.java | 1 - .../autojs/ui/edit/editor/CodeEditText.java | 13 +++++--- .../org/autojs/autojs/ui/widget/EWebView.java | 7 +---- .../java/android/widget/TextViewHelper.java | 30 +++++++++++++++++++ 5 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 common/src/main/java/android/widget/TextViewHelper.java diff --git a/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java b/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java index 4d571390..f5cd4d0f 100644 --- a/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java +++ b/app/src/main/java/org/autojs/autojs/autojs/build/ApkBuilder.java @@ -78,33 +78,33 @@ public class ApkBuilder { } public AppConfig setAppName(String appName) { - appName = appName; + this.appName = appName; return this; } public AppConfig setVersionName(String versionName) { - versionName = versionName; + this.versionName = versionName; return this; } public AppConfig setVersionCode(int versionCode) { - versionCode = versionCode; + this.versionCode = versionCode; return this; } public AppConfig setSourcePath(String sourcePath) { - sourcePath = sourcePath; + this.sourcePath = sourcePath; return this; } public AppConfig setPackageName(String packageName) { - packageName = packageName; + this.packageName = packageName; return this; } public AppConfig setIcon(Callable icon) { - icon = icon; + this.icon = icon; return this; } diff --git a/app/src/main/java/org/autojs/autojs/storage/file/TmpScriptFiles.java b/app/src/main/java/org/autojs/autojs/storage/file/TmpScriptFiles.java index b5d433e9..5f436bba 100644 --- a/app/src/main/java/org/autojs/autojs/storage/file/TmpScriptFiles.java +++ b/app/src/main/java/org/autojs/autojs/storage/file/TmpScriptFiles.java @@ -13,7 +13,6 @@ import java.io.IOException; public class TmpScriptFiles { - public static File create(Context context) throws IOException { ensureTmpDir(context); File tmp = new File(getTmpDir(context), "tmp-" + System.currentTimeMillis() + ".js"); diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java index 11a2e59e..d9bfa6f4 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java @@ -25,7 +25,6 @@ import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; -import android.service.autofill.AutofillService; import android.support.annotation.RequiresApi; import android.support.v7.widget.AppCompatEditText; import android.text.Editable; @@ -35,7 +34,8 @@ import android.util.Log; import android.util.TimingLogger; import android.view.Gravity; import android.view.MotionEvent; -import android.view.autofill.AutofillManager; +import android.widget.TextView; +import android.widget.TextViewHelper; import org.autojs.autojs.ui.edit.theme.Theme; import org.autojs.autojs.ui.edit.theme.TokenMapping; @@ -450,8 +450,13 @@ public class CodeEditText extends AppCompatEditText { @Override public Parcelable onSaveInstanceState() { Bundle bundle = new Bundle(); - Parcelable superData = super.onSaveInstanceState(); - bundle.putParcelable("super_data", superData); + Editable text = getText(); + TextView.SavedState savedState = (SavedState) super.onSaveInstanceState(); + if (text != null && text.length() > 50 * 1024) { + // avoid TransactionTooLargeException + TextViewHelper.setText(savedState, ""); + } + bundle.putParcelable("super_data", savedState); bundle.putInt("debugging_line", mDebuggingLine); int[] breakpoints = new int[mBreakpoints.size()]; int i = 0; diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java b/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java index 0de303a1..dc60cca5 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java @@ -21,15 +21,10 @@ import android.widget.FrameLayout; import android.widget.ProgressBar; import com.stardust.app.OnActivityResultDelegate; + import org.autojs.autojs.R; import org.autojs.autojs.tool.ImageSelector; -import com.stardust.util.IntentUtil; -import org.androidannotations.annotations.OnActivityResult; -import org.androidannotations.annotations.ViewById; - -import java.io.File; -import java.io.InputStream; import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; diff --git a/common/src/main/java/android/widget/TextViewHelper.java b/common/src/main/java/android/widget/TextViewHelper.java new file mode 100644 index 00000000..1742331d --- /dev/null +++ b/common/src/main/java/android/widget/TextViewHelper.java @@ -0,0 +1,30 @@ +package android.widget; + +import java.lang.reflect.Field; + +public class TextViewHelper { + + private static final Field sSavedStateText; + + static { + Field text = null; + try { + text = TextView.SavedState.class.getDeclaredField("text"); + text.setAccessible(true); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + sSavedStateText = text; + } + + public static void setText(TextView.SavedState state, CharSequence text) { + if (sSavedStateText == null) { + return; + } + try { + sSavedStateText.set(state, text); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } +}