android应用程序只删除收件箱中的一个短信

时间:2011-05-11 10:44:02

标签: android

朋友们 我是创建删除短信 它会成功删除短信,但我只想删除一个短信。 如果可能的话,它可能会怎么做。 如果它的代码可用,请发送给我。 请帮帮我。

提前致谢。

3 个答案:

答案 0 :(得分:3)

只需使用此代码。

try {
        Uri uriSms = Uri.parse("content://sms/inbox");
        Cursor c = context.getContentResolver().query(
                uriSms,
                new String[] { "_id", "thread_id", "address", "person",
                        "date", "body" }, "read=0", null, null);

        if (c != null && c.moveToFirst()) {
            do {
                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);
                if (message.equals(body) && address.equals(number)) {
                    // mLogger.logInfo("Deleting SMS with id: " + threadId);
                    context.getContentResolver().delete(
                            Uri.parse("content://sms/" + id), "date=?",
                            new String[] { <your date>});
                    Log.e("log>>>", "Delete success.........");
                }
            } while (c.moveToNext());
        }
    } catch (Exception e) {
        Log.e("log>>>", e.toString());
    }

答案 1 :(得分:-1)

我正在寻找相同的东西。

我正在使用此代码计数,检查它是否有效:

public void deleteOneSMS(int threadIdNo) {

    try {

    Uri uriSms = Uri.parse("content://sms/inbox");

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

    if (c != null && c.move(threadIdNo)) {

        do {

            long threadId = c.getLong(1);

            count++;

            //System.out.println("threadId:: "+threadId);

            if (count == threadIdNo){

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

                }

            } while (c.moveToNext());

        }
    }catch (Exception e) {

    // TODO: handle exception

    System.out.println("Exception:: "+e);

    }
} 

答案 2 :(得分:-1)

如果你想一次只删除一个短信而不是所有的会话,那么这个例子会帮助你,这里我从收件箱中获取lates(最顶层)的短信并删除它们,记住每个短信都有自己的主题和id值区别于其他短信。

try
        {
        Uri uri = Uri.parse("content://sms/inbox");         
        Cursor c =v.getContext().getContentResolver().query(uri, null, null ,null,null); 
        String body = null;
        String number = null;           
        if(c.moveToFirst()) 
        {}
        }
        catch(CursorIndexOutOfBoundsException ee)
            {
             Toast.makeText(v.getContext(), "Error :"+ ee.getMessage() ,Toast.LENGTH_LONG).show();
            }