Android将消息标记为“已读”无法正常工作
我正在构建一个小的android应用程序,在这个应用程序中,我正在阅读传入的消息,我想将其标记为“已读消息”。为此,我添加了所需的权限,还添加了用于侦听传入消息的接收。除了将其标记为读取进程外,一切正常。我试过以下几种方法:Android将消息标记为“已读”无法正常工作,android,sms,Android,Sms,我正在构建一个小的android应用程序,在这个应用程序中,我正在阅读传入的消息,我想将其标记为“已读消息”。为此,我添加了所需的权限,还添加了用于侦听传入消息的接收。除了将其标记为读取进程外,一切正常。我试过以下几种方法: private void markMessageRead(Context context, String number, String body) { Uri uri = Uri.parse("content://sms/inbox"); Cursor c
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);
}
一切正常,没有任何错误。唯一的一件事是它并没有把我的邮件标记为已读邮件。我做错什么了吗。我需要一些帮助。谢谢。将您的应用程序设为默认短信应用程序