diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index 40e9e683f..097d5aaff 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -1101,14 +1101,14 @@ public class Settings { putBoolean(KEY_GUIDE_GALLERY, value); } - private static final String KEY_CLIPBOARD_TEXT = "clipboard_text"; - private static final String DEFAULT_CLIPBOARD_TEXT = ""; + private static final String KEY_CLIPBOARD_TEXT_HASH_CODE = "clipboard_text_hash_code"; + private static final int DEFAULT_CLIPBOARD_TEXT_HASH_CODE = 0; - public static String getClipboardText() { - return getString(KEY_CLIPBOARD_TEXT, DEFAULT_CLIPBOARD_TEXT); + public static int getClipboardTextHashCode() { + return getInt(KEY_CLIPBOARD_TEXT_HASH_CODE, DEFAULT_CLIPBOARD_TEXT_HASH_CODE); } - public static void putClipboardText(String value) { - putString(KEY_CLIPBOARD_TEXT, value); + public static void putClipboardTextHashCode(int value) { + putInt(KEY_CLIPBOARD_TEXT_HASH_CODE, value); } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index bb708a0c5..4ece9b1ac 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -99,7 +99,7 @@ public final class MainActivity extends StageActivity private static final int REQUEST_CODE_SETTINGS = 0; private static final String KEY_NAV_CHECKED_ITEM = "nav_checked_item"; - private static final String KEY_CLIP_TEXT = "clip_text"; + private static final String KEY_CLIP_TEXT_HASH_CODE = "clip_text_hash_code"; /*--------------- Whole life cycle @@ -117,7 +117,7 @@ public final class MainActivity extends StageActivity private int mNavCheckedItem = 0; - private String mClipText = null; + private int mClipTextHashCode = 0; static { registerLaunchMode(SecurityScene.class, SceneFragment.LAUNCH_MODE_SINGLE_TASK); @@ -373,19 +373,19 @@ public final class MainActivity extends StageActivity PermissionRequester.request(this, Manifest.permission.WRITE_EXTERNAL_STORAGE, getString(R.string.write_rationale), PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE); - mClipText = Settings.getClipboardText(); + mClipTextHashCode = Settings.getClipboardTextHashCode(); } private void onRestore(Bundle savedInstanceState) { mNavCheckedItem = savedInstanceState.getInt(KEY_NAV_CHECKED_ITEM); - mClipText = savedInstanceState.getString(KEY_CLIP_TEXT); + mClipTextHashCode = savedInstanceState.getInt(KEY_CLIP_TEXT_HASH_CODE); } @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); outState.putInt(KEY_NAV_CHECKED_ITEM, mNavCheckedItem); - outState.putString(KEY_CLIP_TEXT, mClipText); + outState.putInt(KEY_CLIP_TEXT_HASH_CODE, mClipTextHashCode); } @Override @@ -421,8 +421,9 @@ public final class MainActivity extends StageActivity private void checkClipboardUrl() { String text = getTextFromClipboard(); + int hashCode = text != null ? text.hashCode() : 0; - if (text != null && !text.equals(mClipText)) { + if (text != null && hashCode != 0 && mClipTextHashCode != hashCode) { Pair pair = EhUrl.parseGalleryDetailUrl(text); if (pair != null) { long gid = pair.first; @@ -442,8 +443,10 @@ public final class MainActivity extends StageActivity } } - mClipText = text; - Settings.putClipboardText(text); + if (mClipTextHashCode != hashCode) { + mClipTextHashCode = hashCode; + Settings.putClipboardTextHashCode(hashCode); + } } @Override