在 Android 开发中,可以使用以下代码删除短信:

import android.app.Activity;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    Button deleteButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        deleteButton = findViewById(R.id.delete_button);
        deleteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                deleteSMS('SenderPhoneNumber', 'MessageBody');
            }
        });
    }

    private void deleteSMS(String senderPhoneNumber, String messageBody) {
        try {
            ContentResolver contentResolver = getContentResolver();
            Cursor cursor = contentResolver.query(Uri.parse('content://sms/inbox'), null, null, null, null);
            if (cursor != null) {
                while (cursor.moveToNext()) {
                    String address = cursor.getString(cursor.getColumnIndex('address'));
                    String body = cursor.getString(cursor.getColumnIndex('body'));

                    if (address.equals(senderPhoneNumber) && body.equals(messageBody)) {
                        String smsId = cursor.getString(cursor.getColumnIndex('_id'));
                        contentResolver.delete(Uri.parse('content://sms/' + smsId), null, null);
                        Toast.makeText(MainActivity.this, 'SMS deleted', Toast.LENGTH_SHORT).show();
                        break;
                    }
                }
                cursor.close();
            }
        } catch (Exception e) {
            Toast.makeText(MainActivity.this, 'Failed to delete SMS', Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }
    }
}

在上述代码中,你需要将SenderPhoneNumber替换为要删除短信的发送者手机号码,将MessageBody替换为要删除短信的内容。

代码解释:

  1. deleteSMS(String senderPhoneNumber, String messageBody) 函数:

    • 使用 ContentResolver 获取短信数据库的访问权限。
    • 通过 query() 方法查询短信数据库,并使用 cursor 获取所有短信信息。
    • 遍历短信信息,找到匹配发送者号码和短信内容的短信。
    • 使用 delete() 方法删除匹配的短信。
  2. onClick() 函数:

    • 调用 deleteSMS() 函数,将要删除的发送者号码和短信内容作为参数传入。
  3. onCreate() 函数:

    • 初始化 deleteButton 按钮,并设置点击监听器。

注意事项:

  • 该代码需要在 AndroidManifest.xml 中添加 READ_SMSWRITE_SMS 权限。
  • 确保 SenderPhoneNumberMessageBody 的值正确,否则可能无法删除正确的短信。
  • 可以使用 cursor.getColumnIndexOrThrow() 代替 cursor.getColumnIndex() 来确保查询结果正确。
  • 可以添加错误处理机制,例如判断 cursor 是否为空,以及在删除短信时捕获异常。

最佳实践:

  • 使用 cursor.getColumnIndexOrThrow() 来确保查询结果正确。
  • 添加错误处理机制,例如判断 cursor 是否为空,以及在删除短信时捕获异常。
  • 考虑使用异步操作来避免阻塞主线程。
  • 使用更精细的查询条件来提高效率,例如只查询特定时间段内的短信。
  • 确保代码逻辑清晰,并添加注释来提高代码可读性。

希望以上内容对您有所帮助。

Android 删除短信代码示例 - 完整指南

原文地址: https://www.cveoy.top/t/topic/pf5d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录