0
先生,我有更新我的数据库的问题。我做了包含此数据的列表视图更新android中的sqlite
name
phone number
status
我想,如果他在它发送的邮件带有关键字“可用”更新的个人状态和将更新我的列表视图这样
name
phone number
available
所以我决定让电话号码作为触发器。如果发送消息的人的电话号码在我的列表视图中,它将更新数据库。但这里是我的问题,如果我在我的列表视图以这种格式保存的电话号码
09211234567
发送者将返回自己的手机号码作为
+639211234567
,所以我工作围绕这通过获取子和将电话号码剪切为“9211234567”,然后加0将其转换为“09211234567”。
但是,数据库状态仍然不会更新。但是当我使用相同的技术从模拟器发送短信到模拟器时,它工作得很好。
我救仿真器的数量在我的ListView作为
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”的格式,但尽管如此,我将不会更新。删除和编辑等所有功能也不起作用并显示强制关闭。
原来是这样!谢谢。起初,我试图删除电话号码中第一个字符为0或者+63的字符,然后将其保存到数据库中,然后将其显示在我的列表视图中,其中0。它也有效。 –