0

我在我的 android 应用程序中使用 Gson 类来扁平化对象并通过 REST 将它们发送到服务器,然后使用 HTTP 帖子和响应返回。它一直运作良好。

但是在我正在编写的新应用程序中,我试图做同样的事情,但使用 SMS 消息而不是 HTTP Posts。比如我有一堂课……

class LocReturn
{
    public String error;        //one char y = error
    public String accuracy;
    public String hyperlink;
    public String stationary;   //one char y = stationary
    public String speedmph;
    public String speedkph;
    public String bearing;
}

在我展平类之前,超链接字符串获得以下值。. .

http://maps.google.com/maps?z=17&t=h&q=loc:31.7898,-111.0354

但是,当我检查 json 字符串时,我看到超链接已更改为 . . .

http://maps.google.com/maps?z\u003d17\u0026t\u003dh\u0026q\u003dloc:31.7898,-111.0354

此外,SMS 发送收到 NullPointer 异常。

发送 SMS 消息的代码是 。. .

Gson gson = new Gson();

String jsonstring = gson.toJson(myReturn);

String SMSBody = "###2" + jsonstring;


DebugLog.debugLog("Mole is sending Back: " +  " num= " + GlobalStuff.Mobileno + " SMSBody= " + SMSBody, false);

SmsManager
    .getDefault()
    .sendTextMessage(GlobalStuff.Mobileno, null, SMSBody, null, null);

DebugLog.debugLog("After SMS Send " + SMSBody, true);

finish();

所以,(1)我不明白为什么我得到 NullPointer 和(2)为什么超链接会被改变,这与它有什么关系。谢谢,Gary 编辑:新的 json 对象创建...

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

确实阻止了超链接被修改,但是 nullPointerException 继续。这绝对是导致异常的 sendText 行,因为当我将 SMSBody 替换为“hello world”时,它工作正常。SMSBody 的内容是...

###2{"accuracy":"Excellent","bearing":"","error":"n","hyperlink":"http://maps.google.com/maps?z=17&t=h&q=loc:31.7898,-111.0353","speedkph":"","speedmph":"","stationary":"y"}

这以某种方式导致了 nullPointerException

4

1 回答 1

0

为未来的谷歌员工回答我自己的问题。. .

我忘记了 SMS 代表 SHORT Message Service。我的消息太长了,猜猜当你在 SMSManager.sendTextMessage 中发送太长的消息时会发生什么?你得到一个 nullPointerException (而不是得到一个 MessageTooLong 异常)。

加里

于 2013-08-07T23:29:53.550 回答