使用J2ME技术获得手机的运营商类型

    技术2025-08-08  16

    使用J2ME技术获得手机的运营商类型

    作者:陈跃峰

    出自:http://blog.csdn.net/mailbomb

     

          在手机软件开发中,通过短信SP进行收费已经很普及了,而对于短信SP来说,一般短信的通道号码(即106开通的号码)中,中国移动和中国联通、中国电信的都不一样,也就说如果使用短信SP的话,手机属于的运营商不同,则需要发送不同的内容到不同的通道号码,这样就使手机软件在扣费时必须处理这个问题。

          一般解决这个问题的思路有2种:

    1、         出现选择界面,让用户自己选择

    这种方式对于程序实现来说,是最为简单的一种,但是在实现功能方面的弊端也是最大的。主要有2个问题:a、每次都弹出选择界面不太友好,b、如果用户选择错误则无法扣费。

    所以一般不使用这种方式进行处理。

    2、         通过获得短信服务中心号码进行判断

    如果手机支持WMA则可以通过获得属性“wireless.messaging.sms.smsc”的值,来获得短信服务中心号码。对于国内的三个运营商来说,中国移动的短信服务中心号码是13800XXX500,其中XXX为号码所属的地区电话区号,中国联通的短信服务中心号码比较乱,但是均以130开头,包括3G的手机,而对于中国电信的手机,咨询客服以后均告知不需要设置短信服务中心号码。

    基于以上的内容,则判断手机所属网络的方法代码如下:

          /**

           * 获得手机网络类别

           */

          private int getPhoneNetworkType(){

               //获得短信中心号码

               String smsc = System.getProperty("wireless.messaging.sms.smsc");

               //判断类别

               if(smsc != null){

                     //移动短信中心号码

                     if(smsc.startsWith("138") || smsc.startsWith("+138") || smsc.startsWith("+86138")){

                          return MessageThread.CHINA_MOBILE_TYPE;

                     }else if(smsc.startsWith("+86130") || smsc.startsWith("0086130") || smsc.startsWith("130")|| smsc.startsWith("+130")){

                          return  MessageThread.CHINA_UNICOM_TYPE;

                     }

               }

               //默认为电信手机类型

               return  MessageThread.CHINA_TELECOM_TYPE;

          }

     

    转载自:http://blog.csdn.net/Mailbomb/archive/2010/01/11/5174063.aspx

    最新回复(0)