From 67af6082865b0f412242b02db306da156e5958c3 Mon Sep 17 00:00:00 2001 From: Daehan Kim Date: Mon, 27 Aug 2012 12:27:27 +0900 Subject: [PATCH] Added checking if array has string item. This will resolve Contacts.apk and Camera.apk FC issue. --- .../androlib/res/data/value/ResArrayValue.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java index dd24cecd..8e5b3524 100644 --- a/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java +++ b/apktool-lib/src/main/java/brut/androlib/res/data/value/ResArrayValue.java @@ -66,11 +66,24 @@ public class ResArrayValue extends ResBagValue implements ResValuesXmlSerializab if (! "string".equals(type) && ! "integer".equals(type)) { return null; } + + boolean hasDifferentTypeItem = false; + for (int i = 1; i < mItems.length; i++) { - if (! type.equals(mItems[i].getType())) { - return null; + String itemType = mItems[i].getType(); + + if (itemType.equals("string")) { + //If there is at least one string item in mixed bag, it must be string-array. + return "string"; + } else if (!type.equals(itemType)) { + hasDifferentTypeItem = true; } } + + if (hasDifferentTypeItem) { + return null; + } + return type; }