1package com.android.internal.telephony.gsm; 2 3import java.io.File; 4import java.io.FileNotFoundException; 5import java.io.FileReader; 6import java.io.IOException; 7import java.util.HashMap; 8 9import org.xmlpull.v1.XmlPullParser; 10import org.xmlpull.v1.XmlPullParserException; 11 12import android.os.Environment; 13import android.util.Log; 14import android.util.Xml; 15 16import com.android.internal.util.XmlUtils; 17 18public class SpnOverride { 19 private HashMap<String, String> CarrierSpnMap; 20 21 22 static final String LOG_TAG = "GSM"; 23 static final String PARTNER_SPN_OVERRIDE_PATH ="etc/spn-conf.xml"; 24 25 SpnOverride () { 26 CarrierSpnMap = new HashMap<String, String>(); 27 loadSpnOverrides(); 28 } 29 30 boolean containsCarrier(String carrier) { 31 return CarrierSpnMap.containsKey(carrier); 32 } 33 34 String getSpn(String carrier) { 35 return CarrierSpnMap.get(carrier); 36 } 37 38 private void loadSpnOverrides() { 39 FileReader spnReader; 40 41 final File spnFile = new File(Environment.getRootDirectory(), 42 PARTNER_SPN_OVERRIDE_PATH); 43 44 try { 45 spnReader = new FileReader(spnFile); 46 } catch (FileNotFoundException e) { 47 Log.w(LOG_TAG, "Can't open " + 48 Environment.getRootDirectory() + "/" + PARTNER_SPN_OVERRIDE_PATH); 49 return; 50 } 51 52 try { 53 XmlPullParser parser = Xml.newPullParser(); 54 parser.setInput(spnReader); 55 56 XmlUtils.beginDocument(parser, "spnOverrides"); 57 58 while (true) { 59 XmlUtils.nextElement(parser); 60 61 String name = parser.getName(); 62 if (!"spnOverride".equals(name)) { 63 break; 64 } 65 66 String numeric = parser.getAttributeValue(null, "numeric"); 67 String data = parser.getAttributeValue(null, "spn"); 68 69 CarrierSpnMap.put(numeric, data); 70 } 71 } catch (XmlPullParserException e) { 72 Log.w(LOG_TAG, "Exception in spn-conf parser " + e); 73 } catch (IOException e) { 74 Log.w(LOG_TAG, "Exception in spn-conf parser " + e); 75 } 76 } 77 78} 79