更改android中sms的读取状态

时间:2014-03-18 04:09:19

标签: android sms broadcastreceiver

我建立了一个Android短信应用程序,我希望从我的smsReceiver收到短信一切都很好我使用流动的代码进行对话活动和这种方法完美的工作,但当我回去我的默认短信应用程序标记的消息未读,它显示图标上的通知为未读我不知道我如何更改默认消息应用程序的状态以读取状态为真我使用华为G610进行测试和API 17果冻豆

public static 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()) {

            String address =(cursor.getString(cursor.getColumnIndex("address")));
            int read = cursor.getInt(cursor.getColumnIndex("read"));
            if (address.equals(number) &&  read== 0) {
                if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {
                    String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id"));
                    ContentValues values = new ContentValues();
                    values.put("read", 1);
                    int iii =context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null);
                    Log.i("update", iii+"");
                    return;
                }
            }
        }
      } catch(Exception e) {
          Log.e("Mark Read", "Error in Read: "+e.toString());
      }
} 

2 个答案:

答案 0 :(得分:2)

祝你这个帮助

    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()) {
                    if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) {
                        if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) {
                            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)
      {
          Log.e("Mark Read", "Error in Read: "+e.toString());
      }
}

答案 1 :(得分:1)

这可能会使事情变得更好:

context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id = ?", new String[]{SmsMessageId}); //code