android源码开发 MTK 平台下获取双卡双待SIM卡信息
2014-10-30 14:49
381 查看
MTK 平台下获取SIM卡信息
此处分析仅分析双卡双待,单卡可使用android API 读取(不作分析)这里的分析,只给出源码理解思路,普通应用开发不适宜import com.mediatek.encapsulation.android.telephony.EncapsulatedTelephony;import com.mediatek.encapsulation.android.telephony.EncapsulatedTelephony.SIMInfo;很显然不用怀疑,MTK已经对SIMInfo做好了封装,我们只需要读取就那最有可能做出双卡双待选择使用的短信Mms.apk发送应用来看这里具体的应用不做过多分析,有时间下次会写出来我们进入到com.android.mms.ui.ComposeMessageActivity千万不要小看了这个Activity,这是android短信应用编辑发送短信最核心界面还有一个是com.android.mms.ui.ConversationList毫不夸张的说,这两个Activity构成了短信应用好了 我们进入到 ComposeMessageActivity在onCreate()函数下
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);............./// M: Code analyze 007, Get information from Sim or save message to Sim.(Get all SIM info) @{mGetSimInfoRunnable.run();/// M:}很显然 MTK很聪明的加入了自己的部分
Runnable mGetSimInfoRunnable = new Runnable() {public void run() {getSimInfoList();mUiHandler.sendEmptyMessage(MessageUtils.UPDATE_SENDBUTTON);}};
private void getSimInfoList() {mSimInfoList = SIMInfo.getInsertedSIMList(this);mSimCount = mSimInfoList.isEmpty()? 0: mSimInfoList.size();}初始化之后我们已经知道了SIMInfo那么接下来需要的就是知道要怎么处理关联
public void onClick(View v) {if (v == mSendButtonSms || v == mSendButtonMms || v == mSendButtonIpMessage) {。。。。。。。。。。checkRecipientsCount();...............}}
private void checkRecipientsCount() {.......simSelection();.....}简单解释一下以上两个函数,首先检查收件人是否为空(checkRecipientsCount()),相应的就是选择收件人呢
private void simSelection() {if (EncapsulatedFeatureOption.MTK_GEMINI_SUPPORT == false) {confirmSendMessageIfNeeded();} else if (mSimCount == 0) {} else if (send_sim_id >= 1) {mSelectedSimId = send_sim_id;send_sim_id = -1;confirmSendMessageIfNeeded();} else if (mSimCount == 1) {mSelectedSimId = (int) mSimInfoList.get(0).getSimId();confirmSendMessageIfNeeded();} else if (mSimCount > 1) {// multi sim cards exist.Intent intent = new Intent();mSelectSimType = SIM_SELECT_FOR_SEND_MSG;intent.putExtra(SELECT_TYPE, SIM_SELECT_FOR_SEND_MSG);if (isRecipientsEditorVisible()) {if (mRecipientsEditor.getRecipientCount() == 1/*isOnlyOneRecipient()*/) {mAssociatedSimId = getContactSIM(mRecipientsEditor.getNumbers().get(0));} else {mAssociatedSimId = -1;}} else {if (getRecipients().size() == 1/*isOnlyOneRecipient()*/) {mAssociatedSimId = getContactSIM(getRecipients().get(0).getNumber())} else {mAssociatedSimId = -1;}mMessageSimId = EncapsulatedSettings.System.getLong(getContentResolver(),EncapsulatedSettings.System.SMS_SIM_SETTING, EncapsulatedSettings.System.DEFAULT_SIM_NOT_SET);if (mMessageSimId == EncapsulatedSettings.System.DEFAULT_SIM_SETTING_ALWAYS_ASK ||(mMessageSimId == EncapsulatedSettings.System.SMS_SIM_SETTING_AUTO && MmsConfig.getFolderModeEnabled())) {showSimSelectedDialog(intent);updateSendButtonState();} else if (mMessageSimId == EncapsulatedSettings.System.DEFAULT_SIM_NOT_SET) {if (mAssociatedSimId == -1) {showSimSelectedDialog(intent);updateSendButtonState();} else {mSelectedSimId = mAssociatedSimId;confirmSendMessageIfNeeded();}} else {//DEFAULT SIMif (mAssociatedSimId == -1 || (mMessageSimId == mAssociatedSimId)) {.....}}}}上面函数,稍作解释如果没有卡,就提示如果只有一张卡,就默认如果有2张卡就分为与收件人关联的SIM卡系统设定的默认卡两种讨论
相关文章推荐
- android 双卡开发获取sim卡默认数据卡,获取sim卡信息,sim1卡,sim2卡 2G/3G/4G信号强度
- android开发基础[源码获取及编译、模拟器使用]
- 基于Android客户端的人人网开放平台开发系列教程 (有源码哦)
- Android 获取运营商信息(完整版)-解决高通,MTK等双卡问题
- Android源码开发之获取当前时间的时分秒
- 获取手机IMEI(包括各种平台的双卡双待手机)
- Linux 系统下Android开发:获取源码
- android 获取手机IMSI码 双卡双待手机
- 关于android各种双卡手机获取imei,imsi的处置(mtk,展讯,高通等)
- 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码
- Android 获取运营商信息(完整版)-解决高通,MTK等双卡问题
- Android开发平台中,可通过TelephonyManager 获取本机号码
- Android开发之获取和编译源码
- Android开发之获取手机SIM卡信息
- 如何在Windows平台下可以方便获取到android的源码?
- windows 平台上获取android源码
- Android开发之获取网页源码
- Android开发之获取网页源码
- Android MTK平台源码环境下预置APK方法
- 关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等)