0

アプリに SMS ContentObserver を登録します。ArrayList onChange を MessageID で更新したいと考えています。これは私のObServerコードです..

public class SmsObserver extends ContentObserver {

    private Context mContext;

    private String contactId = "", contactName = "";
    private String smsBodyStr = "", phoneNoStr = "";
    private long smsDatTime = System.currentTimeMillis();

    static final Uri SMS_STATUS_URI = Uri.parse("content://sms");

    public SmsObserver(Handler handler, Context ctx) {
        super(handler);
        mContext = ctx;
    }     

    public boolean deliverSelfNotifications() {
        return true;
    }

    public void onChange(boolean selfChange) {
        try{
            Cursor sms_sent_cursor = mContext.getContentResolver().query(SMS_STATUS_URI, null, null, null, null);
            if (sms_sent_cursor != null) {
                if (sms_sent_cursor.moveToFirst()) {
                    String protocol = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("protocol"));
                    if(protocol == null){
                        int type = sms_sent_cursor.getInt(sms_sent_cursor.getColumnIndex        ("type"));                       
                        if(type == 2){
                            smsBodyStr = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("body")).trim();
                            phoneNoStr = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("address")).trim();
                            smsDatTime = sms_sent_cursor.getLong(sms_sent_cursor.getColumnIndex("date"));
                        }
                    }
                }
            } else {
                Log.e("Info","Send Cursor is Empty");
            }
        } catch(Exception sggh) {
            Log.e("Error", "Error on onChange : "+sggh.toString());
        }
        super.onChange(selfChange);
    }
}

しかし、私は2つのメッセージを送信しています。最初のものは電話が閉じられています。2 つ目は、電話が開いていることです。最初の更新は後者です。2 番目の更新は、私が最初に電話を開いたときです。この ObServer を使用すると、最新の投稿のみにアクセスできます。最新のデータのみを表示します。新しく更新されたデータを取得するにはどうすればよいですか?

4

0 に答える 0