diff options
author | Jonathan Basseri <misterikkit@google.com> | 2015-06-23 14:42:04 -0700 |
---|---|---|
committer | Jonathan Basseri <misterikkit@google.com> | 2015-06-23 15:27:31 -0700 |
commit | 6c8cffb50a5e21cbadbf715a69a57c749ef2626f (patch) | |
tree | 14363c4b145009a9ee13aa95e13e7f2296b4d546 /src/com/android/carrierconfig/DefaultCarrierConfigService.java | |
parent | fa5565a5bb824723695c8734aa15e8e65eea445e (diff) | |
download | android_packages_apps_CarrierConfig-6c8cffb50a5e21cbadbf715a69a57c749ef2626f.tar.gz android_packages_apps_CarrierConfig-6c8cffb50a5e21cbadbf715a69a57c749ef2626f.tar.bz2 android_packages_apps_CarrierConfig-6c8cffb50a5e21cbadbf715a69a57c749ef2626f.zip |
Read XML files as InputStream.
Attempting to read XML files in assets/ with openXmlResourceParser was
failing with FileNotFound because files in the assets folder are not
precompiled into binary XML. Our only choice is to read them as regular
text streams.
Bug: 21618018
Change-Id: I463791ae4a1dd5f6a72433a114bd02e39cf5a943
Diffstat (limited to 'src/com/android/carrierconfig/DefaultCarrierConfigService.java')
-rw-r--r-- | src/com/android/carrierconfig/DefaultCarrierConfigService.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/com/android/carrierconfig/DefaultCarrierConfigService.java b/src/com/android/carrierconfig/DefaultCarrierConfigService.java index 9d61e1b..2317156 100644 --- a/src/com/android/carrierconfig/DefaultCarrierConfigService.java +++ b/src/com/android/carrierconfig/DefaultCarrierConfigService.java @@ -11,6 +11,7 @@ import android.util.Log; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlPullParserFactory; import java.io.File; import java.io.FileOutputStream; @@ -34,8 +35,11 @@ public class DefaultCarrierConfigService extends CarrierService { private static final String TAG = "DefaultCarrierConfigService"; + private XmlPullParserFactory mFactory; + public DefaultCarrierConfigService() { Log.d(TAG, "Service created"); + mFactory = null; } /** @@ -56,16 +60,21 @@ public class DefaultCarrierConfigService extends CarrierService { String fileName = "carrier_config_" + id.getMcc() + id.getMnc() + ".xml"; try { - XmlPullParser input = - getApplicationContext().getAssets().openXmlResourceParser(fileName); - PersistableBundle config = readConfigFromXml(input, id); + synchronized (this) { + if (mFactory == null) { + mFactory = XmlPullParserFactory.newInstance(); + } + } + XmlPullParser parser = mFactory.newPullParser(); + parser.setInput(getApplicationContext().getAssets().open(fileName), "utf-8"); + PersistableBundle config = readConfigFromXml(parser, id); // Treat vendor.xml as if it were appended to the carrier config file we read. XmlPullParser vendorInput = getApplicationContext().getResources().getXml(R.xml.vendor); PersistableBundle vendorConfig = readConfigFromXml(vendorInput, id); config.putAll(vendorConfig); return config; } - catch (IOException e) { + catch (IOException | XmlPullParserException e) { // Return null for unknown networks - they should use the defaults. Log.e(TAG, e.toString()); return null; |