android双卡发短信,基于5.1.1实现
来源:互联网 发布:男士钱包网络代理 编辑:程序博客网 时间:2024/05/20 15:10
【原创】作品,转载请注明出处,请尊重作者的辛苦。
最近开发中遇到了双卡的问题,关于双卡查看了好多文章,但是没有一个能解决问题的,要么就是定制的或者有厂商提供支持的,我这里是基于android 5.1.1实现的双卡发送短信,这里需要用的反射,下面直接上代码,供大家参考:
一、首先实例化相关类
TelephonyManager mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);Class<TelephonyManager> clz = (Class<TelephonyManager>) mTelephonyManager.getClass();
二、调用相关方法
1、获取sim的状态,参数对应sim卡的序号,分别为0(卡1)和1(卡2):
public int getSimState(int slotID) {int status = 0;try {Method mtd = clz.getMethod("getSimState", int.class);mtd.setAccessible(true);status = (Integer) mtd.invoke(mTelephonyManager, slotID);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}return status;}
返回的值是sim卡的状态码,对应值:
TelephonyManager.SIM_STATE_READYTelephonyManager.IM_STATE_ABSENTTelephonyManager.SIM_STATE_NETWORK_LOCKEDTelephonyManager.SIM_STATE_PIN_REQUIREDTelephonyManager.SIM_STATE_READYTelephonyManager.SIM_STATE_UNKNOWN
如果返回的是
TelephonyManager.SIM_STATE_READY那就是可用状态;
2、发送短信
private void sendSms(final int which) {SubscriptionInfo sInfo = null;final SubscriptionManager sManager = (SubscriptionManager) mActivity.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);List<SubscriptionInfo> list = sManager.getActiveSubscriptionInfoList();
if (list.size() == 2) {// double cardsInfo = list.get(which);} else {//single cardsInfo = list.get(0);}if (sInfo != null) {<span style="white-space:pre"></span>//provider是对应10086、10010、10000
<span style="white-space:pre"></span>//这个需要根据sik卡的Mcc和Mnc自己判断,这里就不贴出来了String provider = matchIMSI(String.valueOf(sInfo.getMcc()) + "0"+ String.valueOf(sInfo.getMnc()));int subId = sInfo.getSubscriptionId();Log.i(TAG, " select provider = " + provider + ", subid = "+ subId);SmsManager manager = SmsManager.getSmsManagerForSubscriptionId(subId);if (!TextUtils.isEmpty(provider)) {manager.sendTextMessage(provider, null, "YE", null, null);Toast.makeText(mActivity, "信息正在发送,请稍候", Toast.LENGTH_SHORT).show();} else {Toast.makeText(mActivity, "无法正确的获取SIM卡信息,请稍候重试",Toast.LENGTH_SHORT).show();}}}
0 0
- android双卡发短信,基于5.1.1实现
- android实现短信监听
- android实现短信监听
- Android实现发送短信
- android 拨号,短信实现
- Android实现发送短信
- android发短信实现短信分割
- 基于BroadReceiver实现短信拦截和发送短信
- 基于android 社区app短信分享 发送回调事件实现
- 短信验证码的实现--基于Mob3.0 SMS SDK + Android Studio 2.3.3
- 基于短信网关WAP推送的实现
- 基于短信网关WAP推送的实现
- 基于短信网关wap推送的实现
- 基于短信网关WAP推送的实现
- 基于短信网关WAP推送的实现
- 基于BroadReceiver实现获取短信内容
- 基于ContentObserver实现的短信监听器
- 基于短信网关WAP推送的实现
- Maven+SpringMVC整合之helloworld
- 还是回归CSDN吧
- red-black tree的删除节点算法
- 二分法查找
- iOS URLEcode,URLDecode
- android双卡发短信,基于5.1.1实现
- 定时任务中ifconfig问题
- ios 后台数据请求AFNetwork常遇见的1016错误与3840错误的解决方法
- 控件大小随窗口大小改变
- VLAN与子网究竟有什么不同的呀?
- Casperjs循环执行(重复执行不退出)
- freemarker的key的遍历问题,出现许多无用的key
- maven(版本3.3.1)构建项目时碰到的几个问题及解决
- leetcode wordsearch II