From 332e0d7c9b11eebbceaf4467d8065390ff487651 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 26 Dec 2021 20:39:58 +0100 Subject: [PATCH] Dr Who --- .../java/eu/faircode/email/FragmentBase.java | 6 +---- .../eu/faircode/email/FragmentDialogBase.java | 6 +---- .../main/java/eu/faircode/email/Helper.java | 22 +++++++++++++++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentBase.java b/app/src/main/java/eu/faircode/email/FragmentBase.java index ff791ef96a..76f180079b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentBase.java @@ -218,11 +218,7 @@ public class FragmentBase extends Fragment { } public String getRequestKey() { - String we = toString(); - int pa = we.indexOf('('); - int sp = we.indexOf(' ', pa); - String who = we.substring(pa + 1, sp); - return getClass().getName() + ":result:" + who; + return Helper.getRequestKey(this); } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java index 492c564963..c422e57db8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java @@ -44,11 +44,7 @@ public class FragmentDialogBase extends DialogFragment { private int targetRequestCode; public String getRequestKey() { - String we = toString(); - int pa = we.indexOf('('); - int sp = we.indexOf(' ', pa); - String who = we.substring(pa + 1, sp); - return getClass().getName() + ":result:" + who; + return Helper.getRequestKey(this); } @Override diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 981794fe11..5cf215a8cf 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -98,6 +98,7 @@ import androidx.browser.customtabs.CustomTabsServiceConnection; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import androidx.core.content.FileProvider; +import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -119,6 +120,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLDecoder; @@ -1185,6 +1187,26 @@ public class Helper { return layout.getOffsetForHorizontal(line, x); } + static String getRequestKey(Fragment fragment) { + String who; + try { + Class cls = fragment.getClass(); + while (!cls.isAssignableFrom(Fragment.class)) + cls = cls.getSuperclass(); + Field f = cls.getDeclaredField("mWho"); + f.setAccessible(true); + who = (String) f.get(fragment); + } catch (Throwable ex) { + Log.w(ex); + String we = fragment.toString(); + int pa = we.indexOf('('); + int sp = we.indexOf(' ', pa); + who = we.substring(pa + 1, sp); + } + + return fragment.getClass().getName() + ":result:" + who; + } + // Graphics static int dp2pixels(Context context, int dp) {