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

私が心配しているもう1つのことは、連絡先リストです。番号を「09211234567」と入力すると、元のアドレスが「+639211234567」を返す場合があります。エミュレーターで試してみて、アドレス「5556」に送信しましたが、getOriginatingAddress() は「15555215556」のようなものを返しました。どうすれば対処できますか?

4

1 に答える 1

1

リスト ビューを更新する必要があります。これは、一度表示されたリスト ビューが自動的に更新されないためです。

データベースで更新が行われた後に行うことができます。

リストビューを更新するには、以下を参照してください: Android リストビューを更新するには?

于 2012-11-28T11:32:06.293 に答える