gpt4 book ai didi

android预置默认的语音信箱号码具体实现

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章android预置默认的语音信箱号码具体实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

有些SIM卡在出厂时并没有预置VoiceMail number,但运营商又要求能够根据PLMN去自适应的从手机中读取到预设的VM number。在此介绍以xml的方式预置VM number的方法,以及如何允许用户去修改并能够记住用户的选择。VM number使用的优先级为: SIM卡读取>用户设置>xml预置。在用户修改voice mail number时,优先存储到SIM卡。若SIM卡存储失败,则以IMSI为单位存储到手机中。 1、支持以XML的方式预置VM number,文件名为:voicemail-conf.xml 文件的内容格式为 。

复制代码 代码如下

<?xml version='1.0' encoding='utf-8'?> <voicemail> <voicemail numeric="46000" carrier="CMCC" vmnumber="10086" vmtag="CMCC voicemail" /> </voicemail> 。

2、关于文件的位置 文件在手机中的位置:system/etc 文件在工程中的位置(GB, GB2): vendor\mediatek\etc 文件在工程中的位置(ICS及以后): mediatek\source\frameworks\telephony\etc 对于GB、GB2的版本,还需要在在build\target\product\xxx.mk (xxx为工程名)中,添加语句PRODUCT_COPY_FILES += vendor/mediatek/etc/voicemail-conf.xml:system/etc/voicemail-conf.xml 对于ICS及ICS2的版本,还需要在build\target\product\common.mk中,添加语句PRODUCT_COPY_FILES += mediate/source/frameworks/telephony/etc/voicemail-conf.xml:system/etc/voicemail-conf.xml 对于JB及JB2以后的版本,还需要在build\target\product\common.mk中,添加语句PRODUCT_COPY_FILES += mediate/frameworks/base/telephony/etc/voicemail-conf.xml:system/etc/voicemail-conf.xml 3、使SIM卡中的VM number优先于预置号码的方法 将SIMRecords.java (frameworks\base\telephony\java\com\android\internal\telephony\gsm)中的函数private setVoiceMailByCountry(String spn)中的语句if (mVmConfig.containsCarrier(spn))修改为 if (TextUtils.isEmpty(voiceMailTag) && TextUtils.isEmpty(voiceMailNum) && mVmConfig.containsCarrier(spn)) 4、在使用了voicemail-conf.xml来预置VM number后,使终端用户可以修改VM number的方法 1) 在SIMRecords.java中添加语句import android.text.TextUtils; 2) 在SIMRecords.java中添加一个成员变量boolean isSetByCountry = false; 3) 将SIMRecords.java中的函数private setVoiceMailByCountry(String spn)修改为 。

复制代码 代码如下

private void setVoiceMailByCountry(String spn) { if (TextUtils.isEmpty(voiceMailTag) && TextUtils.isEmpty(voiceMailNum) && mVmConfig.containsCarrier(spn)) { // isVoiceMailFixed = true; //注释掉此语句以让用户能够修改 isSetByCountry = true; //让GsmPhone知道这是从xml中读取的 voiceMailNum = mVmConfig.getVoiceMailNumber(spn); voiceMailTag = mVmConfig.getVoiceMailTag(spn); } 。

4) 在GSMPhone.java (frameworks\base\telephony\java\com\android\internal\telephony\gsm)中的函数handleMessage中的语句case EVENT_SIM_RECORDS_LOADED:中将语句 if (imsi != null && imsiFromSIM != null && !imsiFromSIM.equals(imsi)) { … } 修改为  。

复制代码 代码如下

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext()); // 当相应卡槽更换SIM卡后,是否清除用户对之前SIM卡的VM number设置 boolean clear_if_change_sim = sp.getBoolean(“clear_if_change”, false); if (clear_if_change_sim && imsi != null && imsiFromSIM != null && !imsiFromSIM.equals(imsi)){ //storeVoiceMailNumber(null); Log.d(LOG_TAT, “reset vm number because sim changed”); SharedPreferences.Editor editor = sp.edit(); editor.remove(getVmSimImsi()); editor.apply(); setVmSimImsi(null); } 。

5) 将GSMPhone.java中的函数private void storeVoiceMailNumber(String number)中的语句editor.putString(VM_NUMBER+mySimId, number);修改为editor.putString(getSubscriberId(), number); //不再使用卡槽作为保存VM number的单位,而使用IMSI 6) 将GSMPhone.java中的函数public String getVoiceMailNumber()中的语句if (TextUtils.isEmpty(number))修改为 if (TextUtils.isEmpty(number) || ((SIMRecords)mIccRecords).isSetByCountry) //如果SIM卡中 //无VM number或是通过voicemail-conf.xml来设置的,则应该读取一下Preference,看是否用户 //对此SIM卡设置过VM number。 并且将语句number = sp.getString(VM_NUMBER+mySimId, null);修改为 。

复制代码 代码如下

Log.d(LOG_TAG, vm num from simRecords, num= “+number+” is from factory= “+ ((SIMRecords)mIccRecords).isSetbyCountry); String temp = sp.getString(getSubscriberId(), null); if (temp != null) { Log.d(LOG_TAG, “replace vm num with user defined, num= “+temp); number = temp; } 。

最后此篇关于android预置默认的语音信箱号码具体实现的文章就讲到这里了,如果你想了解更多关于android预置默认的语音信箱号码具体实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com