From ee5db344af60aea8fc8c2df2ba1f946db0520b99 Mon Sep 17 00:00:00 2001 From: REAndroid Date: Mon, 16 Jan 2023 06:58:33 -0500 Subject: [PATCH] fix: xml array encoding/decoding of integer and string #12 --- .../java/com/reandroid/lib/apk/ApkUtil.java | 3 ++ .../lib/apk/xmldecoder/XMLArrayDecoder.java | 19 ++++++++-- .../apk/xmlencoder/XMLValuesEncoderArray.java | 35 +++++++++++++++---- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/reandroid/lib/apk/ApkUtil.java b/src/main/java/com/reandroid/lib/apk/ApkUtil.java index 0f11bf2..c20b6e0 100644 --- a/src/main/java/com/reandroid/lib/apk/ApkUtil.java +++ b/src/main/java/com/reandroid/lib/apk/ApkUtil.java @@ -137,4 +137,7 @@ public class ApkUtil { public static final String NAME_data="data"; public static final String RES_DIR_NAME="res"; public static final String FILE_NAME_PUBLIC_XML ="public.xml"; + + public static final String TAG_STRING_ARRAY = "string-array"; + public static final String TAG_INTEGER_ARRAY = "integer-array"; } diff --git a/src/main/java/com/reandroid/lib/apk/xmldecoder/XMLArrayDecoder.java b/src/main/java/com/reandroid/lib/apk/xmldecoder/XMLArrayDecoder.java index f56e49f..7728842 100644 --- a/src/main/java/com/reandroid/lib/apk/xmldecoder/XMLArrayDecoder.java +++ b/src/main/java/com/reandroid/lib/apk/xmldecoder/XMLArrayDecoder.java @@ -15,13 +15,18 @@ */ package com.reandroid.lib.apk.xmldecoder; +import com.reandroid.lib.apk.ApkUtil; import com.reandroid.lib.arsc.decoder.ValueDecoder; import com.reandroid.lib.arsc.value.ResValueBag; import com.reandroid.lib.arsc.value.ResValueBagItem; +import com.reandroid.lib.arsc.value.ValueType; import com.reandroid.lib.common.EntryStore; import com.reandroid.xml.XMLElement; -class XMLArrayDecoder extends BagDecoder{ +import java.util.HashSet; +import java.util.Set; + + class XMLArrayDecoder extends BagDecoder{ public XMLArrayDecoder(EntryStore entryStore) { super(entryStore); } @@ -30,11 +35,19 @@ class XMLArrayDecoder extends BagDecoder{ public void decode(ResValueBag resValueBag, XMLElement parentElement) { ResValueBagItem[] bagItems = resValueBag.getBagItems(); EntryStore entryStore=getEntryStore(); + Set valueTypes = new HashSet<>(); for(int i=0;i