Android 删除短信代码示例 - 完整指南
在 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替换为要删除短信的内容。
代码解释:
-
deleteSMS(String senderPhoneNumber, String messageBody)函数:- 使用
ContentResolver获取短信数据库的访问权限。 - 通过
query()方法查询短信数据库,并使用cursor获取所有短信信息。 - 遍历短信信息,找到匹配发送者号码和短信内容的短信。
- 使用
delete()方法删除匹配的短信。
- 使用
-
onClick()函数:- 调用
deleteSMS()函数,将要删除的发送者号码和短信内容作为参数传入。
- 调用
-
onCreate()函数:- 初始化
deleteButton按钮,并设置点击监听器。
- 初始化
注意事项:
- 该代码需要在
AndroidManifest.xml中添加READ_SMS和WRITE_SMS权限。 - 确保
SenderPhoneNumber和MessageBody的值正确,否则可能无法删除正确的短信。 - 可以使用
cursor.getColumnIndexOrThrow()代替cursor.getColumnIndex()来确保查询结果正确。 - 可以添加错误处理机制,例如判断
cursor是否为空,以及在删除短信时捕获异常。
最佳实践:
- 使用
cursor.getColumnIndexOrThrow()来确保查询结果正确。 - 添加错误处理机制,例如判断
cursor是否为空,以及在删除短信时捕获异常。 - 考虑使用异步操作来避免阻塞主线程。
- 使用更精细的查询条件来提高效率,例如只查询特定时间段内的短信。
- 确保代码逻辑清晰,并添加注释来提高代码可读性。
希望以上内容对您有所帮助。
原文地址: https://www.cveoy.top/t/topic/pf5d 著作权归作者所有。请勿转载和采集!