From 116565568b6b70a1c97309c4ab85f066d388b0b6 Mon Sep 17 00:00:00 2001 From: Dong Liu Date: Mon, 18 May 2015 11:31:43 +0800 Subject: [PATCH] fix locale match bug --- src/main/java/net/dongliu/apk/parser/Main.java | 6 +++--- .../net/dongliu/apk/parser/struct/resource/Type.java | 9 +++++++++ .../net/dongliu/apk/parser/struct/resource/TypeSpec.java | 8 ++++++++ .../java/net/dongliu/apk/parser/utils/ParseUtils.java | 1 + 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/dongliu/apk/parser/Main.java b/src/main/java/net/dongliu/apk/parser/Main.java index d9fb82b..203be4d 100644 --- a/src/main/java/net/dongliu/apk/parser/Main.java +++ b/src/main/java/net/dongliu/apk/parser/Main.java @@ -1,12 +1,12 @@ package net.dongliu.apk.parser; -import net.dongliu.apk.parser.bean.CertificateMeta; - import java.io.IOException; import java.security.cert.CertificateException; import java.util.List; import java.util.Locale; +import net.dongliu.apk.parser.bean.CertificateMeta; + /** * Main method for parser apk * @@ -16,7 +16,7 @@ public class Main { public static void main(String[] args) throws IOException, CertificateException { String apkFile = args[0]; try (ApkParser parser = new ApkParser(apkFile)) { - parser.setPreferredLocale(Locale.SIMPLIFIED_CHINESE); + parser.setPreferredLocale(Locale.getDefault()); System.out.println(parser.getApkMeta()); List certList = parser.getCertificateMetaList(); for (CertificateMeta certificateMeta : certList) { diff --git a/src/main/java/net/dongliu/apk/parser/struct/resource/Type.java b/src/main/java/net/dongliu/apk/parser/struct/resource/Type.java index 4216932..91374e7 100644 --- a/src/main/java/net/dongliu/apk/parser/struct/resource/Type.java +++ b/src/main/java/net/dongliu/apk/parser/struct/resource/Type.java @@ -145,4 +145,13 @@ public StringPool getStringPool() { public void setStringPool(StringPool stringPool) { this.stringPool = stringPool; } + + @Override + public String toString() { + return "Type{" + + "name='" + name + '\'' + + ", id=" + id + + ", locale=" + locale + + '}'; + } } diff --git a/src/main/java/net/dongliu/apk/parser/struct/resource/TypeSpec.java b/src/main/java/net/dongliu/apk/parser/struct/resource/TypeSpec.java index b498b5c..1b9ec48 100644 --- a/src/main/java/net/dongliu/apk/parser/struct/resource/TypeSpec.java +++ b/src/main/java/net/dongliu/apk/parser/struct/resource/TypeSpec.java @@ -40,4 +40,12 @@ public short getId() { public void setId(short id) { this.id = id; } + + @Override + public String toString() { + return "TypeSpec{" + + "name='" + name + '\'' + + ", id=" + id + + '}'; + } } diff --git a/src/main/java/net/dongliu/apk/parser/utils/ParseUtils.java b/src/main/java/net/dongliu/apk/parser/utils/ParseUtils.java index faca04d..b33579d 100644 --- a/src/main/java/net/dongliu/apk/parser/utils/ParseUtils.java +++ b/src/main/java/net/dongliu/apk/parser/utils/ParseUtils.java @@ -316,6 +316,7 @@ public static String getResourceById(long resourceId, boolean isStyle, break; } else if (level > currentLevel) { result = resource.toStringValue(resourceTable, locale); + currentLevel = level; } } if (locale == null || result == null) {