【问题标题】:Delete message from inbox or sent programmatically in Android lollipop and marshmallow从收件箱中删除消息或在 Android 棒棒糖和棉花糖中以编程方式发送
【发布时间】:2016-08-14 19:21:53
【问题描述】:

我想在 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"/>

请帮助我删除消息。

建议我执行以下操作:

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

【问题讨论】:

    标签: android telephony android-contentresolver


    【解决方案1】:

    我想在 android lollipop 和 marshmallow 中以编程方式删除特定联系人号码的消息

    您需要编写一个完整的短信客户端。

    您无法实现仅删除 API 级别 19 及更高级别的消息的应用。用户不会让您的应用成为设备上的默认短信应用。如果您的应用程序不是默认的短信应用程序,那么“您的应用程序无法写入 SMS Provider 进行其他操作,例如将消息标记为草稿、将它们标记为已读、删除它们等”。请参阅this official blog post 了解更多信息。

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

    在 Android、用户的默认 SMS 客户端和可能的用户之间决定如何处理已发送的 SMS 消息。你没有投票权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 2016-07-30
      • 2016-05-02
      • 2017-01-28
      • 1970-01-01
      相关资源
      最近更新 更多