双卡发送和接收彩信的解决方法 mms 主要还是看数据连接的建立

双卡发送和接收彩信的解决方法,因每一个厂商都有自己的接口,下面列出一些我常用到的的接口:

          第一种

                  1、点击发送(卡1或卡2)按钮时,就把数据连接(data connect)切换到对应的卡上。问题来了,如何切换,用哪个api? 一般厂商和原生android源码里都有一个管理和订阅card信息的隐藏管理类:"android.telephony.SubscriptionManager" 或 "android.telephony.MSimTelephonyManager" 。这2个类第三方app是不能直接使用的,所有我们需要使用反射来调用。

反射android.telephony.SubscriptionManager:


反射android.telephony.MSimTelephonyManager:


这2个方法都有个参数,大多数的手机都是0(代表卡1)和1(代表卡2),也有1和2的。这样就可以把数据连接切换到相应的卡了。彩信就可以发送和接收了,其实这样相当走的是单卡流程。注意:这样有一个问题,数据连接切换过去,彩信发送和接收完成了,数据连接并不会切换回来。所以,还要我们手机调用上面的方法切换原来设置的数据连接。怎么得到原来的值?肯定要我们切换之前就要获取用户之前设置的数据连接是哪个卡。获取方法如下:

SubscriptionManager:


MSimTelephonyManager:


还需要注意的是:可能setXXX和getXXX有些手机会不同,只要打印下SubscriptionManager和MSimTelephonyManager有些什么方法就很容易解决了。

第二种:

       有些手机直接就可以在startUsingNetworkFeature建立数据连接和stopUsingNetworkFeature断开数据连接。注意:subId 一般是0或1(1或2)。也有手机不是stopUsingNetworkFeatureGemini 和 startUsingNetworkFeatureGemini这种的,直接就是startUsingNetworkFeature 和 stopUsingNetworkFeature ,那怎么区分现在是卡1或卡2呢?关键在Feature常量的定义:如联想有些手机定义是:enableMMSSUB0 (卡1)和 enableMMSSUB1(卡2),Feature的具体值是多少,得看每一个手机厂商自己的定义了。支持这种的手机有个好处,第三方的app就不会在维护数据连接了。厂商帮我们做了。startUsingNetworkFeatureMSMS同下,只是名字不同,反射下就明白。

建立数据连接:


断开数据连接:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值