Мне нужно удалить либо недавний SMS-разговор, либо SMS-разговор для определенного номера в Android Studio. - PullRequest
0 голосов
/ 14 октября 2018

Создание диалога:

private AlertDialog AskOption()
{
    AlertDialog myQuittingDialogBox =new AlertDialog.Builder(this)
            .setTitle("Security Alert")
            .setMessage("Do you want to delete conversation?")
            .setIcon(R.drawable.d)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    SharedPreferences xsx = getApplicationContext().getSharedPreferences("ll", Context.MODE_PRIVATE);

                    nmr = xsx.getString("nmr", "");

                    removeMessage();
                   // removeMessage(getApplicationContext(),nmr);

                    delete_thread(nmr);
                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            })
            .create();
    return myQuittingDialogBox;

}

Это функция, которая удаляет полный разговор, но он не работает.

private void removeMessage() {
    Uri uriSMSURI = Uri.parse("content://sms");
    Cursor cur = getApplicationContext().getContentResolver().query(uriSMSURI, null, null, null,null);
    String phoneNo, msg;
    if (cur.moveToFirst()) {
        String pid = cur.getString(1);
        // do some process
        Toast.makeText(getApplicationContext(), pid, Toast.LENGTH_LONG).show();
        Cursor cur2 = getApplicationContext().getContentResolver().query(Uri.parse("content://sms/conversations/" + pid), null, null, null, null);
        if (cur2.moveToFirst()) {
            ////Tried with this with no luck, its Delete the whole Conversation :
            String pid2 = cur2.getString(1);
            String uri = "content://sms/conversations/" + pid2;
            getApplicationContext().getContentResolver().delete(Uri.parse(uri), null, null);
        }
    }

}

Это еще одна функция, которая удаляет разговор смс определенного номера, но этотакже не работает ... Я также дал разрешения, я не понимаю, где я делаю ошибку.

public void delete_thread(String thread)
{
    Cursor c = getApplicationContext().getContentResolver().query(
            Uri.parse("content://sms/"),new String[] {
                    "_id", "thread_id", "address", "person", "date","body" }, null, null, null);

    try {
        while (c.moveToNext())
        {
            int id = c.getInt(0);
            String address = c.getString(2);
            if (address.equals(thread))
            {
                getApplicationContext().getContentResolver().delete(
                        Uri.parse("content://sms/inbox/" + id), null, null);
            }
          //  Toast.makeText(Settings.this,nmr+id+"  02",Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {

        Toast.makeText(Settings.this,e.toString(),Toast.LENGTH_LONG).show();
    }
}

Я испробовал почти все представленные здесь решения, но ни одно из них не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...