データベースの更新に問題があります。このデータを含むリストビューを作成しました
name
phone number
status
彼が「利用可能」というキーワードを含むメッセージを送信し、このようにリストビューを更新した場合、その人のステータスを更新したいと思います
name
phone number
available
ということで、電話番号をきっかけに作ることにしました。メッセージを送信した人の電話番号がリストビューにある場合、データベースが更新されます。しかし、これが私の問題です。電話番号をリストビューにこの形式で保存した場合
09211234567
送信者は自分の電話番号を次のように返します
+639211234567
そのため、部分文字列を取得して電話番号を「9211234567」に切り取り、0を追加して「09211234567」に変換することでこれを回避しました。
ただし、データベースのステータスはまだ更新されません。しかし、エミュレータからエミュレータにSMSを送信する際に同じ手法を使用すると、問題なく動作します。
リストビューにエミュレータの数を次のように保存しました
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」形式を入力しようとしましたが、それでも更新しません。削除や編集などのすべての機能も機能せず、強制終了が表示されます。