先生,我在更新数据库时遇到问题。我制作了一个包含这些数据的列表视图
name
phone number
status
如果他发送了一条带有关键字“可用”的消息,我想更新他的状态,并且会像这样更新我的列表视图
name
phone number
available
所以我决定把电话号码作为触发器。如果发送消息的人的电话号码在我的列表视图中,它将更新数据库。但这是我的问题,如果我以这种格式将电话号码保存在我的列表视图中
09211234567
发件人将返回他们的电话号码为
+639211234567
所以我通过获取子字符串并将电话号码剪切为“9211234567”,然后添加0将其转换为“09211234567”来解决这个问题。
但是,数据库状态仍然没有更新。但是当我使用相同的技术从模拟器发送短信到模拟器时,它工作得很好。
我将列表视图中的模拟器数量保存为
5556
但模拟器返回
15555215556
所以我只是得到子字符串来得到 5556
请帮我。这是我的代码:
public static String sender;
public GroupDb info;
public String aStatus = "available";
public String nStatus = "not available";
public String addNum = "0";
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
info = new GroupDb(context);
Bundle bundle = intent.getExtras();
Object[] pdusObj = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdusObj.length];
for (int i = 0; i<pdusObj.length; i++)
{
messages[i] = SmsMessage.createFromPdu ((byte[])
pdusObj[i]);
sender = messages[i].getOriginatingAddress();
}
for (SmsMessage msg : messages) {
if (msg.getMessageBody().contains("available")) {
info.open();
String remFirstChar = sender.substring(3);
addNum += remFirstChar;
Toast.makeText(context.getApplicationContext(), "received sms from: " +addNum,
Toast.LENGTH_LONG).show();
//if starts with +639
if(sender.length() == 13)
{
info.updateStatus(addNum, aStatus);
Toast.makeText(context.getApplicationContext(), "addNum: " +addNum,
Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(context.getApplicationContext(), "sender: " +sender,
Toast.LENGTH_LONG).show();
info.updateStatus(remFirstChar, aStatus);
}
info.close();
}//end if - available
这是我如何更新我的状态
//update status
public void updateStatus(String mNumber, String mStatus) throws SQLException
{
// TODO Auto-generated method stub
ContentValues cvUpdate = new ContentValues();
cvUpdate.put(KEY_STATUS, mStatus);
ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_NUMBER + "=" + mNumber, null);
}
更新:我什至尝试在列表视图中输入“+63”格式,但我仍然不会更新。删除和编辑等所有功能也不起作用并显示强制关闭。