Loading src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java +43 −29 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.AsyncResult; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.SystemProperties; import android.telephony.CarrierConfigManager; Loading Loading @@ -57,6 +58,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; Loading @@ -77,8 +79,7 @@ public class EmergencyNumberTracker extends Handler { private static final String EMERGENCY_NUMBER_DB_OTA_FILE_NAME = "emergency_number_db"; private static final String EMERGENCY_NUMBER_DB_OTA_FILE_PATH = "misc/emergencynumberdb/" + EMERGENCY_NUMBER_DB_OTA_FILE_NAME; private File mEmergencyNumberDbOtaFilePath = new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH); private FileInputStream mEmergencyNumberDbOtaFileInputStream = null; /** @hide */ public static boolean DBG = false; Loading Loading @@ -128,7 +129,7 @@ public class EmergencyNumberTracker extends Handler { /** Event indicating the update for the OTA emergency number database. */ private static final int EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB = 5; /** Event indicating the override for the test OTA emergency number database. */ private static final int EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH = 6; private static final int EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH = 6; private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -175,6 +176,14 @@ public class EmergencyNumberTracker extends Handler { public EmergencyNumberTracker(Phone phone, CommandsInterface ci) { mPhone = phone; mCi = ci; try { mEmergencyNumberDbOtaFileInputStream = new FileInputStream( new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH)); } catch (FileNotFoundException ex) { loge("Initialize ota emergency database file input failure: " + ex); } if (mPhone != null) { CarrierConfigManager configMgr = (CarrierConfigManager) mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); Loading Loading @@ -252,12 +261,11 @@ public class EmergencyNumberTracker extends Handler { case EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB: updateOtaEmergencyNumberListDatabaseAndNotify(); break; case EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH: case EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH: if (msg.obj == null) { loge("EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH:" + " Result from otaFilePath is null."); overrideOtaEmergencyNumberDbFilePath(null); } else { overrideTestOtaEmergencyNumberDbFilePath((String) msg.obj); overrideOtaEmergencyNumberDbFilePath((ParcelFileDescriptor) msg.obj); } break; } Loading Loading @@ -358,13 +366,24 @@ public class EmergencyNumberTracker extends Handler { } /** * Override the test OTA Emergency Number database file path. * Override the OTA Emergency Number database file path. * * @hide */ public void updateOtaEmergencyNumberDbFilePath(ParcelFileDescriptor otaParcelFileDescriptor) { this.obtainMessage( EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, otaParcelFileDescriptor).sendToTarget(); } /** * Override the OTA Emergency Number database file path. * * @hide */ public void updateTestOtaEmergencyNumberDbFilePath(String otaFilePath) { public void resetOtaEmergencyNumberDbFilePath() { this.obtainMessage( EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, otaFilePath).sendToTarget(); EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, null).sendToTarget(); } private EmergencyNumber convertEmergencyNumberFromEccInfo(EccInfo eccInfo, String countryIso) { Loading Loading @@ -466,8 +485,7 @@ public class EmergencyNumberTracker extends Handler { // Read the OTA emergency number database List<EmergencyNumber> updatedOtaEmergencyNumberList = new ArrayList<>(); try { inputStream = new BufferedInputStream( new FileInputStream(mEmergencyNumberDbOtaFilePath)); inputStream = new BufferedInputStream(mEmergencyNumberDbOtaFileInputStream); allEccMessages = ProtobufEccData.AllInfo.parseFrom(readInputStreamToByteArray( new GZIPInputStream(inputStream))); logd(mCountryIso + " ota emergency database is loaded. Ver: " + otaDatabaseVersion); Loading Loading @@ -564,23 +582,19 @@ public class EmergencyNumberTracker extends Handler { notifyEmergencyNumberList(); } private void overrideTestOtaEmergencyNumberDbFilePath(String otaFilePath) { logd("overrideTestOtaEmergencyNumberDbFilePath:" + otaFilePath); if (otaFilePath.equals("RESET")) { mEmergencyNumberDbOtaFilePath = new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH); return; } String[] otaFilePathParts = otaFilePath.split("@"); if (otaFilePathParts.length != 2) { loge("overrideTestOtaEmergencyNumberDbFilePath: otaFilePath length error"); return; } if (otaFilePathParts[0].equals("sdcard")) { mEmergencyNumberDbOtaFilePath = new File( Environment.getExternalStorageDirectory(), otaFilePathParts[1]); private void overrideOtaEmergencyNumberDbFilePath( ParcelFileDescriptor otaParcelableFileDescriptor) { logd("overrideOtaEmergencyNumberDbFilePath:" + otaParcelableFileDescriptor); try { if (otaParcelableFileDescriptor == null) { mEmergencyNumberDbOtaFileInputStream = new FileInputStream( new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH)); } else { loge("overrideTestOtaEmergencyNumberDbFilePath: otaFilePath prefix error"); mEmergencyNumberDbOtaFileInputStream = new FileInputStream( otaParcelableFileDescriptor.getFileDescriptor()); } } catch (FileNotFoundException ex) { loge("Override ota emergency database failure: " + ex); } } Loading Loading
src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java +43 −29 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.AsyncResult; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.SystemProperties; import android.telephony.CarrierConfigManager; Loading Loading @@ -57,6 +58,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; Loading @@ -77,8 +79,7 @@ public class EmergencyNumberTracker extends Handler { private static final String EMERGENCY_NUMBER_DB_OTA_FILE_NAME = "emergency_number_db"; private static final String EMERGENCY_NUMBER_DB_OTA_FILE_PATH = "misc/emergencynumberdb/" + EMERGENCY_NUMBER_DB_OTA_FILE_NAME; private File mEmergencyNumberDbOtaFilePath = new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH); private FileInputStream mEmergencyNumberDbOtaFileInputStream = null; /** @hide */ public static boolean DBG = false; Loading Loading @@ -128,7 +129,7 @@ public class EmergencyNumberTracker extends Handler { /** Event indicating the update for the OTA emergency number database. */ private static final int EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB = 5; /** Event indicating the override for the test OTA emergency number database. */ private static final int EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH = 6; private static final int EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH = 6; private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override Loading Loading @@ -175,6 +176,14 @@ public class EmergencyNumberTracker extends Handler { public EmergencyNumberTracker(Phone phone, CommandsInterface ci) { mPhone = phone; mCi = ci; try { mEmergencyNumberDbOtaFileInputStream = new FileInputStream( new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH)); } catch (FileNotFoundException ex) { loge("Initialize ota emergency database file input failure: " + ex); } if (mPhone != null) { CarrierConfigManager configMgr = (CarrierConfigManager) mPhone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); Loading Loading @@ -252,12 +261,11 @@ public class EmergencyNumberTracker extends Handler { case EVENT_UPDATE_OTA_EMERGENCY_NUMBER_DB: updateOtaEmergencyNumberListDatabaseAndNotify(); break; case EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH: case EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH: if (msg.obj == null) { loge("EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH:" + " Result from otaFilePath is null."); overrideOtaEmergencyNumberDbFilePath(null); } else { overrideTestOtaEmergencyNumberDbFilePath((String) msg.obj); overrideOtaEmergencyNumberDbFilePath((ParcelFileDescriptor) msg.obj); } break; } Loading Loading @@ -358,13 +366,24 @@ public class EmergencyNumberTracker extends Handler { } /** * Override the test OTA Emergency Number database file path. * Override the OTA Emergency Number database file path. * * @hide */ public void updateOtaEmergencyNumberDbFilePath(ParcelFileDescriptor otaParcelFileDescriptor) { this.obtainMessage( EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, otaParcelFileDescriptor).sendToTarget(); } /** * Override the OTA Emergency Number database file path. * * @hide */ public void updateTestOtaEmergencyNumberDbFilePath(String otaFilePath) { public void resetOtaEmergencyNumberDbFilePath() { this.obtainMessage( EVENT_OVERRIDE_TEST_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, otaFilePath).sendToTarget(); EVENT_OVERRIDE_OTA_EMERGENCY_NUMBER_DB_FILE_PATH, null).sendToTarget(); } private EmergencyNumber convertEmergencyNumberFromEccInfo(EccInfo eccInfo, String countryIso) { Loading Loading @@ -466,8 +485,7 @@ public class EmergencyNumberTracker extends Handler { // Read the OTA emergency number database List<EmergencyNumber> updatedOtaEmergencyNumberList = new ArrayList<>(); try { inputStream = new BufferedInputStream( new FileInputStream(mEmergencyNumberDbOtaFilePath)); inputStream = new BufferedInputStream(mEmergencyNumberDbOtaFileInputStream); allEccMessages = ProtobufEccData.AllInfo.parseFrom(readInputStreamToByteArray( new GZIPInputStream(inputStream))); logd(mCountryIso + " ota emergency database is loaded. Ver: " + otaDatabaseVersion); Loading Loading @@ -564,23 +582,19 @@ public class EmergencyNumberTracker extends Handler { notifyEmergencyNumberList(); } private void overrideTestOtaEmergencyNumberDbFilePath(String otaFilePath) { logd("overrideTestOtaEmergencyNumberDbFilePath:" + otaFilePath); if (otaFilePath.equals("RESET")) { mEmergencyNumberDbOtaFilePath = new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH); return; } String[] otaFilePathParts = otaFilePath.split("@"); if (otaFilePathParts.length != 2) { loge("overrideTestOtaEmergencyNumberDbFilePath: otaFilePath length error"); return; } if (otaFilePathParts[0].equals("sdcard")) { mEmergencyNumberDbOtaFilePath = new File( Environment.getExternalStorageDirectory(), otaFilePathParts[1]); private void overrideOtaEmergencyNumberDbFilePath( ParcelFileDescriptor otaParcelableFileDescriptor) { logd("overrideOtaEmergencyNumberDbFilePath:" + otaParcelableFileDescriptor); try { if (otaParcelableFileDescriptor == null) { mEmergencyNumberDbOtaFileInputStream = new FileInputStream( new File(Environment.getDataDirectory(), EMERGENCY_NUMBER_DB_OTA_FILE_PATH)); } else { loge("overrideTestOtaEmergencyNumberDbFilePath: otaFilePath prefix error"); mEmergencyNumberDbOtaFileInputStream = new FileInputStream( otaParcelableFileDescriptor.getFileDescriptor()); } } catch (FileNotFoundException ex) { loge("Override ota emergency database failure: " + ex); } } Loading