1:TelephonyIntents.SPN_STRINGS_UPDATED_ACTION
触发条件:
更新显示:
收到action后更新读取String形式:intent.getStringExtra(TelephonyIntents.EXTRA_SPN)
实际值加载、解读过程:
1>; TelephonyIntents.EXTRA_SPN赋值在MSimGsmServiceStateTracker.java里 :updateSpnDisplay()方法里intent.putExtra(TelephonyIntents.EXTRA_SPN, spn); OK,Now寻“spn”赋值---->同在该方法里有:String spn = (iccRecords != null)?iccRecords.getServiceProviderName() : “”;
2>: iccRecords.getServiceProviderName()进入getServiceProviderName()方法,返回string:“mSpn”,mSpn值何时赋值?
3>:托展:从“mSpn”赋值入手,SIMRecords.java的setSpnFromConfig()方法调SpnOverride,java的getSpn(String carrier)方法,进而找到loadSpnOverrides()方法,其做了mCarrierSpnMap.put(numeric, data);实现将spn的xml文件放入手机系统目录:
final File spnFile = new File(Environment.getRootDirectory(), PARTNER_SPN_OVERRIDE_PATH);
而PARTNER_SPN_OVERRIDE_PATH = ”etc/spn-conf.xml“;
Environment.getRootDirectory()返回string型的private static final File DIR_ANDROID_ROOT = getDirectory(ENV_ANDROID_ROOT, "/system");
ENV_ANDROID_ROOT指向“ANDROID_ROOT“
至此得到spn-conf.xml在手机系统的system/etc/目录下面。