1c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/* 2c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Copyright (C) 2006 The Android Open Source Project 3c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 4c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * you may not use this file except in compliance with the License. 6c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * You may obtain a copy of the License at 7c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 8c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 10c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Unless required by applicable law or agreed to in writing, software 11c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * See the License for the specific language governing permissions and 14c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * limitations under the License. 15c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 16c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 17c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepackage com.android.internal.telephony.gsm; 18c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 19c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Environment; 20c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.util.Xml; 21c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.util.Log; 22c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 23c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.util.HashMap; 24c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.FileReader; 25c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.File; 26c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.FileNotFoundException; 27c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport java.io.IOException; 28c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 29c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport org.xmlpull.v1.XmlPullParser; 30c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport org.xmlpull.v1.XmlPullParserException; 31c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 32c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.util.XmlUtils; 33c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 34c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/** 35c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@hide} 36c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 37c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleclass VoiceMailConstants { 38c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private HashMap<String, String[]> CarrierVmMap; 39c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 40c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 41c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final String LOG_TAG = "GSM"; 42c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final String PARTNER_VOICEMAIL_PATH ="etc/voicemail-conf.xml"; 43c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 44c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int NAME = 0; 45c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int NUMBER = 1; 46c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int TAG = 2; 47c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville static final int SIZE = 3; 48c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 49c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville VoiceMailConstants () { 50c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville CarrierVmMap = new HashMap<String, String[]>(); 51c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville loadVoiceMail(); 52c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 53c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 54c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville boolean containsCarrier(String carrier) { 55c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return CarrierVmMap.containsKey(carrier); 56c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 57c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 58c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String getCarrierName(String carrier) { 59c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String[] data = CarrierVmMap.get(carrier); 60c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return data[NAME]; 61c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 62c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 63c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String getVoiceMailNumber(String carrier) { 64c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String[] data = CarrierVmMap.get(carrier); 65c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return data[NUMBER]; 66c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 67c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 68c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String getVoiceMailTag(String carrier) { 69c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String[] data = CarrierVmMap.get(carrier); 70c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return data[TAG]; 71c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 72c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 73c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville private void loadVoiceMail() { 74c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville FileReader vmReader; 75c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 76c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville final File vmFile = new File(Environment.getRootDirectory(), 77c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville PARTNER_VOICEMAIL_PATH); 78c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 79c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 80c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville vmReader = new FileReader(vmFile); 81c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (FileNotFoundException e) { 82c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.w(LOG_TAG, "Can't open " + 83c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Environment.getRootDirectory() + "/" + PARTNER_VOICEMAIL_PATH); 84c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville return; 85c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 86c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 87c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville try { 88c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville XmlPullParser parser = Xml.newPullParser(); 89c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville parser.setInput(vmReader); 90c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 91c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville XmlUtils.beginDocument(parser, "voicemail"); 92c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 93c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville while (true) { 94c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville XmlUtils.nextElement(parser); 95c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 96c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String name = parser.getName(); 97c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville if (!"voicemail".equals(name)) { 98c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville break; 99c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 100c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String[] data = new String[SIZE]; 102c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville String numeric = parser.getAttributeValue(null, "numeric"); 103c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville data[NAME] = parser.getAttributeValue(null, "carrier"); 104c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville data[NUMBER] = parser.getAttributeValue(null, "vmnumber"); 105c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville data[TAG] = parser.getAttributeValue(null, "vmtag"); 106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 107c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville CarrierVmMap.put(numeric, data); 108c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 109c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (XmlPullParserException e) { 110c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.w(LOG_TAG, "Exception in Voicemail parser " + e); 111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } catch (IOException e) { 112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville Log.w(LOG_TAG, "Exception in Voicemail parser " + e); 113a63bf4237dfc3c9b81f7d5eff57c5500b8b8215dJohan Redestig } finally { 114a63bf4237dfc3c9b81f7d5eff57c5500b8b8215dJohan Redestig try { 115a63bf4237dfc3c9b81f7d5eff57c5500b8b8215dJohan Redestig if (vmReader != null) { 116a63bf4237dfc3c9b81f7d5eff57c5500b8b8215dJohan Redestig vmReader.close(); 117a63bf4237dfc3c9b81f7d5eff57c5500b8b8215dJohan Redestig } 118a63bf4237dfc3c9b81f7d5eff57c5500b8b8215dJohan Redestig } catch (IOException e) {} 119c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville } 121c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville} 122