将传入的短信标记为默认SMS应用程序中的读取

时间:2016-03-21 10:38:23

标签: android broadcastreceiver sms default

很抱歉,如果我没有找到合适的头衔。 我想知道是否可以通过我的应用程序将SMS标记为默认SMS应用程序中的读取? 即我正在开发我自己的应用程序,其中我存储不是来自联系人列表的短信但问题是,当有短信收到它收到我的应用程序和默认的短信应用程序,所以我想,当有短信收到然后我可以将短信标记为已读(默认短信应用程序),这样就无需转到默认的短信应用程序并将短信标记为已读。 我能从申请表中做到吗?

1 个答案:

答案 0 :(得分:0)

试试这段代码

private void markMessageASRead(Context context, String numb, 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());
  }

}