最近在研究wap push,现在试过自己写个方法来接收wap push,比如139的邮件到达通知的推送消息
现在试过如下方法:广播接收器配上: 
<receiver android:name=".SmsReceive" android:enabled="true">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
        <data android:mimeType="application/vnd.wap.sic" />
    </intent-filter>
</receiver> 
当触发wap push的action时使用byte[] push = intent.getByteArrayExtra("data");来获取,但是打印出的push数组与手机系统在eclipse控制台上打印出的格式有很大的差距,很不解。
我做过如下考虑:这个intent中get“data”对应得值,也就是说系统事先已近将数据存放在intent中并将键命名为data,这里是不是已经对数据进行过操作,或者说这是一种加密。请高人给解释下,或者能给出其他获取消息的方法。
下面是我在控制台上拿下来的数据:
系统打印出来的消息为:72060a03ae81eaaf828dc3b48402056a10e982aee4bbb63a
77617020707573680045c60c037761706d61696c2e3130303836
2e636e2f693f663d343026693d3232363931333137393300080183000101,将该串16进制数转换成字符串后基本显示正常内容,中间包含了邮件的主题和url。
但是将push数组打印出来却是下面的内容:2510616-23-126-82-28-69-74581199711232112117115104069-581231199711210997105108464948485654469911047105631026
15248381056150505457495149555751081-125011格式上差距很大
还望高手指点迷津小弟不胜感激。

解决方案 »

  1.   

    byte字节流,你转换成string或者stringbuffer等类型试试
      

  2.   

    终于有人看帖了,我试过了 上面的结果就是转换成字符串string得到的:
                  String a = "";
                for (Object b : push)
                {
                    a += b;
                }
    输出a
      

  3.   


    用你的方法试了一下果然问题就是出在这里的
    正确方法就是应该 String a = new String(push, "UTF-8");这样输出的a字符串就和系统输出的16进制串转换之后的字符串显示一样了
      

  4.   

    恩 要注意编码格式 反正要不就是unicode 要不就是utf8
      

  5.   

    我最近也在做这个,我想问一下,这个intent.getByteArrayExtra("data")得到,只能看到数字和字母,汉字全是乱码,你是怎么解析的。
      

  6.   


    你是在android日志里打印出来的吧?android日志不支持显示中文
      

  7.   

    貌似我在android日志中可以显示中文的。你看看是不是两边的编码格式不一致导致中文乱码。建议看一下编码格式GB2312,UTF-8等等。
      

  8.   

    "UTF-8" 编码无敌