diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java index 2cb2696d..d58fcda8 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/impl/HandleBindApp.java @@ -66,7 +66,12 @@ public class HandleBindApp extends XC_MethodHook { Map metaData = MetaDataReader.getMetaData(new File(appInfo.sourceDir)); isModule = metaData.containsKey("xposedmodule"); if (isModule) { - xposedminversion = (Integer) metaData.get("xposedminversion"); + Object minVersionRaw = metaData.get("xposedminversion"); + if (minVersionRaw instanceof Integer) { + xposedminversion = (Integer) minVersionRaw; + } else if (minVersionRaw instanceof String) { + xposedminversion = MetaDataReader.extractIntPart((String) minVersionRaw); + } xposedsharedprefs = metaData.containsKey("xposedsharedprefs"); } } catch (NumberFormatException | IOException e) { diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/util/MetaDataReader.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/util/MetaDataReader.java index 3ac3326b..14e3ea83 100644 --- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/util/MetaDataReader.java +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/util/MetaDataReader.java @@ -104,4 +104,16 @@ public class MetaDataReader { super.end(); } } + + public static int extractIntPart(String str) { + int result = 0, length = str.length(); + for (int offset = 0; offset < length; offset++) { + char c = str.charAt(offset); + if ('0' <= c && c <= '9') + result = result * 10 + (c - '0'); + else + break; + } + return result; + } } diff --git a/xposed-bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java index b6771acf..34ffd185 100644 --- a/xposed-bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java @@ -25,8 +25,6 @@ import de.robv.android.xposed.services.FileResult; * This class is basically the same as SharedPreferencesImpl from AOSP, but * read-only and without listeners support. Instead, it is made to be * compatible with all ROMs. - * - * @deprecated in Android Pie or later was lost by Google, will not remove */ public final class XSharedPreferences implements SharedPreferences { private static final String TAG = "XSharedPreferences"; @@ -77,7 +75,12 @@ public final class XSharedPreferences implements SharedPreferences { Map metaData = MetaDataReader.getMetaData(new File(m)); isModule = metaData.containsKey("xposedmodule"); if (isModule) { - xposedminversion = (Integer) metaData.get("xposedminversion"); + Object minVersionRaw = metaData.get("xposedminversion"); + if (minVersionRaw instanceof Integer) { + xposedminversion = (Integer) minVersionRaw; + } else if (minVersionRaw instanceof String) { + xposedminversion = MetaDataReader.extractIntPart((String) minVersionRaw); + } xposedsharedprefs = metaData.containsKey("xposedsharedprefs"); } } catch (NumberFormatException | IOException e) {