读取的Android标记消息无法正常工作

时间:2015-04-09 09:07:07

标签: android sms

我正在构建小型Android应用程序,其中我正在阅读传入消息,我想将其标记为已读消息。为此,我添加了所需的权限,并添加了接收来监听传入的消息。除了将其标记为读取进程外,一切正常。我尝试了以下方式:

private void markMessageRead(Context context, String number, String body) {

    Uri uri = Uri.parse("content://sms/inbox");
    Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
    try{

        while (cursor.moveToNext()) {

            Debug.print("inside mark read before if ------ ");
            Debug.print(cursor.getString(cursor.getColumnIndex("address"))+"  "+number);
            Debug.print(cursor.getInt(cursor.getColumnIndex("read"))+"  ");
            Debug.print(cursor.getString(cursor.getColumnIndex("body"))+"  "+body);


            if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) {
                if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {

                    Debug.print("inside read message inside if ... ");
                    String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id"));
                    ContentValues values = new ContentValues();
                    values.put("read", true);
                    context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null);
                    return;
                }
            }
        }
    }catch(Exception e)
    {
    }
}

//inside receiver side ... 
@Override
public void onReceive(Context context, Intent intent) {

    mContext = context;
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        markMessageRead(mContext, message.getOriginatingAddress(), message.getMessageBody());
                    }
                }, 2000);
}

一切正常,没有任何错误。唯一不会将我的消息标记为已读消息。我做错了什么。需要一些帮助。谢谢。

0 个答案:

没有答案