我开发了一个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("\"","\\\\\"");
请帮助
答案 0 :(得分:1)
从String中删除双引号在Java中的作用如下:
String replaced = original.replaceAll("\"", "");
所以你的第一次尝试将按预期工作。如果它不适合您,您可能在其他地方遇到问题,即没有将替换后的字符串传递给数据库。你没有发布那段代码,但我想某处存在问题。
答案 1 :(得分:0)
使用此
String first = second.replaceAll("\"", "");