倒置的逗号不会被空格替换而不会显示在列表视图中

时间:2016-06-03 08:04:09

标签: android listview broadcastreceiver sms

我开发了一个SMS应用程序,当收到SMS时,它会保存在我的应用程序的列表视图中。现在的问题是,如果消息包含引号,那么它不会保存在数据库中,因此不会显示在列表视图中。然而,我尝试了网上可用的不同方法,但没有一个工作。然后我使用Log.e来确定传入消息是否正在替换反转的逗号,但它不会替换反转的逗号。我接收短信的代码是:

if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
  Bundle bundle = intent.getExtras();
  SmsMessage[] msgs = null;
  String msg_from="";
  String msgBody = "";
  String msgDate="";
  String title="";

  if (bundle != null) {
    try {

      Object[] pdus = (Object[]) bundle.get("pdus");
      msgs = new SmsMessage[pdus.length];
      for (int i = 0; i < msgs.length; i++) {
        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
        msg_from = msgs[i].getOriginatingAddress();

         msgBody += msgs[i].getDisplayMessageBody();

             msgBody.replace("\"","");
         Log.e("answer", msgBody);

我检查了最后一行,但如果我写了#34;您好并将其发送给我自己,然后跟踪logcat中显示的错误:

near "HELLO": syntax error (code 1): 
while compiling: insert into smss(contactnumber,contactname,message,date)
values ("03329234863", "03329234863",""HELLO ","1464940881000")

我还尝试用这些解决方案替换msgBody,但它们都不起作用:

 msgBody.replaceAll("\"","");
 msgBody.replace("\"","\\\\\"");

请帮助

2 个答案:

答案 0 :(得分:1)

从String中删除双引号在Java中的作用如下:

String replaced = original.replaceAll("\"", "");

所以你的第一次尝试将按预期工作。如果它不适合您,您可能在其他地方遇到问题,即没有将替换后的字符串传递给数据库。你没有发布那段代码,但我想某处存在问题。

答案 1 :(得分:0)

使用此

String first = second.replaceAll("\"", "");