2

如何将 getOriginatingAddress() 中的电话号码与我的自定义联系人列表视图进行比较?我想将状态更改为“可用”,但它不会更新我的列表视图并且仍显示默认的“不可用”。如果我使用的条件是“KEY_NUMBER = mNumber”不是主键,是否可以使用 ourDatabase.update()?提前感谢您的帮助

public void updateStatusAvailable(String mNumber) throws SQLException 
{
    // TODO Auto-generated method stub
    ContentValues cvUpdate = new ContentValues();
    cvUpdate.put(KEY_STATUS, "AVAILABLE");
    ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_NUMBER + "=" + mNumber, null);
}

这是我获取发件人电话号码的方法

public String aStatus = "available";
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();
            Toast.makeText(context.getApplicationContext(), "received sms from: " +sender,
                Toast.LENGTH_SHORT).show();

            info.updateStatusAvailable(sender);

            info.close();
        }//end if - available

        if(msg.getMessageBody().contains("notavailable")) 
        {


        }//end if - not available
    }//end for

}// end onreceive

我关心的另一件事是我的联系人列表,如果我输入的号码为“09211234567”,则原始地址可能会返回“+639211234567”。我已经在模拟器中尝试过并将其发送到地址“5556”,但 getOriginatingAddress() 返回类似于“15555215556”的内容。我该如何处理?

4

1 回答 1

1

您必须刷新列表视图。这是因为列表视图一旦显示就不会自动刷新。

您可以在数据库上完成更新后执行此操作。

为了刷新您的列表视图,请参阅:如何刷新 Android 列表视图?

于 2012-11-28T11:32:06.293 回答