从SMS内容URI获取消息,但不传递消息

时间:2018-01-19 12:01:42

标签: android sms uri smsmanager

我正在开发一个系统应用程序,其中我必须以编程方式从设备发送消息并在发送后删除该消息。除了下面的点之外,一切正常工作

如果邮件发送成功,那么我可以从短信内容URI中找到它,但如果邮件失败,那么我没有从内容URI中获取它。我使用下面的代码删除邮件 < / p>

 public void deleteTheMessage(Context context, String value) {
    Uri uri = Uri.parse("content://sms");
    Cursor c = context.getApplicationContext().getContentResolver().query(uri, null, null, null, null);
    try {

        if (c != null) {
            Log.i("deleteTheMessage-->", "  count : " + c.getCount());
        } else {
            Log.i("deleteTheMessage-->", " c null: ");
        }
        while (c.moveToNext()) {
            try {
                if (c != null && c.moveToFirst()) {
                    do {
                        String address = c.getString(2);
                        String id = c.getString(0);
                        long threadId = c.getLong(1);
                        Log.i("deleteTheMessage-->", " address: " + address + " body: " + "" + " threadId: " + threadId + " id: " + id);
                        try {
                            if (address.contains(value)) {
                                int deltedrowcount = context.getApplicationContext().getContentResolver().delete(uri, "thread_id = " + threadId, null);
                                if (deltedrowcount != 0) {
                                    Log.i("deleteTheMessage-->", " SMS has Deleted successfully " + deltedrowcount);
                                }
                                Log.i("deleteTheMessage-->", " body  " + address);
                            }
                        } catch (Exception e) {
                            Log.i("deleteTheMessage-->", "SmsWriteOpUtil Exception in deleting SMS  " + e.getMessage());
                        }

                    } while (c.moveToNext());
                }
            } catch (Exception e) {
                Log.i("deleteTheMessage-->", "c.moveToNext() Exception in deleting SMS" + e.getMessage());
            }
        }
    } catch (Exception e) {
        Log.i("deleteTheMessage-->", " try Exception in deleting SMS: " + e.getMessage());
    } finally {
        c.close();
    }
}

我想删除邮件地址11345请参见下面的屏幕截图。

enter image description here

1 个答案:

答案 0 :(得分:1)

最后,我得到了使用以下代码删除未送达邮件的解决方案。

        long threadId = Telephony.Threads.getOrCreateThreadId(context, phoneNumber);
        LogMgr.i("deleteByThreadID-->" + "  threadId : " + threadId);
        int threadIdDeletedCount = context.getContentResolver().delete(Uri.parse("content://sms"), "thread_id =?", new String[]{String.valueOf(threadId)});
        LogMgr.i("deleteByThreadID: --> threadIdDeletedCount " + threadIdDeletedCount);

phoneNumber 这是发送邮件的号码。