Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中删除特定联系人号码的所有短信_Java_Android - Fatal编程技术网

Java 如何在android中删除特定联系人号码的所有短信

Java 如何在android中删除特定联系人号码的所有短信,java,android,Java,Android,我有以下删除所有短信对话的代码 Uri inboxUri = Uri.parse("content://sms/conversations"); int count = 0; Cursor c = context.getContentResolver().query(inboxUri , null, null, null, null); while (c.moveToNext()) { try { // Delete the SMS String pid

我有以下删除所有短信对话的代码

Uri inboxUri = Uri.parse("content://sms/conversations");
int count = 0;
Cursor c = context.getContentResolver().query(inboxUri , null, null, null, null);
while (c.moveToNext()) {
    try {
        // Delete the SMS
        String pid = c.getString(0); // Get id;
        String uri = "content://sms/" + pid;
        count = context.getContentResolver().delete(Uri.parse(uri),
                null, null);
    } catch (Exception e) {
    }
}
return count;

但是我想删除特定联系人号码的短信,怎么办?

您可以使用

private void removeMessage(Context context, String fromAddress) {

    Uri uriSMS = Uri.parse("content://sms/inbox");
    Cursor cursor = context.getContentResolver().query(uriSMS, null, 
                                                               null, null, null);
    cursor.moveToFirst();
      if(cursor.getCount() > 0){
        int ThreadId = cursor.getInt(1);
        Log.d("Thread Id", ThreadId+" id - "+cursor.getInt(0));
        Log.d("contact number", cursor.getString(2));
        Log.d("column name", cursor.getColumnName(2));

        context.getContentResolver().delete(Uri.
                parse("content://sms/conversations/"+ThreadId), "address=?", 
                                                      new String[]{fromAddress});
        Log.d("Message Thread Deleted", fromAddress);
      }
      cursor.close();
}

这个方法是删除我的会话列表中的最后一个会话在Android中,只有一个消息线程为特定用户维护,所以最后一个会话也包括所有以前的消息。我说,如果我有两个2号的会话,那么这对最后一个数目的会话有效。如果我给定的号码位于对话列表的最后一个位置,那么它将根据以下代码工作:int ThreadId=cursor.getInt(1);Log.d(“线程Id”,线程Id+“Id-”+游标.getInt(0));如果ThreadId位于cursor.getInt(1),那么为什么在下一行使用curson.getInt(0)记录它