从收件箱中删除邮件或在Android棒棒糖和marshmallow中以编程方式发送

时间:2016-08-14 10:56:38

标签: android telephony android-contentresolver

我想在Android Lollipop和Marshmallow中以编程方式删除特定联系号码的消息。

我使用以下代码来读取和删除消息......但此代码实际上并未删除消息:

public List<Sms> getAllSms() {
    try {
        List<Sms> lstSms = new ArrayList<Sms>();
        Sms objSms = new Sms();
        Uri uriSms = Uri.parse("content://sms/");

        Cursor c = getActivity().getContentResolver().query(uriSms, new String[]{"_id", "thread_id", "address", "person", "date", "body"}, null, null, null);

        getActivity().startManagingCursor(c);
        int totalSMS = c.getCount();
        if (c.moveToFirst()) {
            for (int i = 0; i < totalSMS; i++) {
                long id = c.getLong(0);
                long threadId = c.getLong(1);
                String address = c.getString(2);
                String body = c.getString(5);
                String date = c.getString(3);

                Log.e("log>>>",
                    "0--->" + c.getString(0) + "1---->" + c.getString(1)
                            + "2---->" + c.getString(2) + "3--->"
                            + c.getString(3) + "4----->" + c.getString(4)
                            + "5---->" + c.getString(5));
                Log.e("log>>>", "date" + c.getString(0));

                if (address.equals("1234567890")) {
                    // mLogger.logInfo("Deleting SMS with id: " + threadId);

                    getContext().getContentResolver().delete(
                        Uri.parse("content://sms/" + id), null, null);

                    Log.e("log>>>", "Delete success.........");
                }
                c.moveToNext();
            }
        } else {
            throw new RuntimeException("You have no SMS ");
        }
        c.close();
        return lstSms;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

清单权限:

<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>

请帮我删除邮件。

OR

建议我采用以下方法:

如果我在上述Android版本中以编程方式在后台发送消息,则不应将消息保存在已发送文件夹中或设备中的任何位置。

1 个答案:

答案 0 :(得分:4)

  

我想在android lollipop和marshmallow

中以编程方式删除特定联系号码的消息

您需要编写完整的SMS客户端。

您无法实现仅删除API级别19及更高级别的邮件的应用。用户不会将您的应用程序设置为设备上的默认SMS应用程序。如果您的应用程序不是默认的SMS应用程序,那么&#34;您的应用程序无法写入SMS提供程序进行其他操作,例如将邮件标记为草稿,将其标记为已读,删除等等。&# 34;有关详情,请参阅this official blog post

  

告诉我如果我在上面的Android版本中以编程方式在后台发送消息的方式。那么它不应该保存在已发送的文件夹中或设备中的任何地方

对于发送的SMS消息所发生的事情的决定是在Android,用户的默认SMS客户端以及可能的用户之间做出的。你没有得到投票。