Android 删除传入的sms @覆盖 公共void onReceive(上下文、意图){ Bundle=intent.getExtras(); SmsMessage[]msgs=null; if(bundle!=null){ Object[]pdus=(Object[])bundle.get(“pdus”); msgs=新SMS消息[PDU.length]; 对于(int i=0;i
未删除新传入的短消息。当我从该号码收到短消息时,它只删除来自该发件人的旧短消息,而不删除新消息。我需要从特定号码删除新传入的短消息(请参阅源代码)。请尝试以下代码:Android 删除传入的sms @覆盖 公共void onReceive(上下文、意图){ Bundle=intent.getExtras(); SmsMessage[]msgs=null; if(bundle!=null){ Object[]pdus=(Object[])bundle.get(“pdus”); msgs=新SMS消息[PDU.length]; 对于(int i=0;i,android,sms,Android,Sms,未删除新传入的短消息。当我从该号码收到短消息时,它只删除来自该发件人的旧短消息,而不删除新消息。我需要从特定号码删除新传入的短消息(请参阅源代码)。请尝试以下代码: @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; if (bundle != null) {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
if (msgs[i].getOriginatingAddress().equals(
SmsModuleActivity.number))
deleteMessage(context, msgs[i]);
}
}
}
private void deleteMessage(Context context, SmsMessage msg) {
Uri deleteUri = Uri.parse("content://sms/inbox/");
Cursor c = context.getContentResolver().query(deleteUri, null, null,
null, null);
while (c.moveToNext()) {
try {
String pid = c.getString(0);
String uri = "content://sms/inbox/" + pid;
ContentValues values = new ContentValues();
values.put("read", true);
context.getContentResolver().update(Uri.parse(uri), values,
null, null);
context.getContentResolver().delete(Uri.parse(uri), null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
请尝试以下代码:
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
if (msgs[i].getOriginatingAddress().equals(
SmsModuleActivity.number))
deleteMessage(context, msgs[i]);
}
}
}
private void deleteMessage(Context context, SmsMessage msg) {
Uri deleteUri = Uri.parse("content://sms/inbox/");
Cursor c = context.getContentResolver().query(deleteUri, null, null,
null, null);
while (c.moveToNext()) {
try {
String pid = c.getString(0);
String uri = "content://sms/inbox/" + pid;
ContentValues values = new ContentValues();
values.put("read", true);
context.getContentResolver().update(Uri.parse(uri), values,
null, null);
context.getContentResolver().delete(Uri.parse(uri), null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
您可以使用
abortBroadcast()
代替deleteMessage(context,msgs[i])
,这将阻止传入的短消息到达收件箱,您不需要删除它。您可以使用abortBroadcast()
代替deleteMessage(context,msgs[i])
这将阻止传入的短消息到达收件箱,您不需要删除它。在第一个活动类中收到短消息后,使用此代码删除最后一条短消息。不要忘记
在mainfest文件中切换sms读写权限
int id = cursor.getInt(cursor.getColumnIndex("_id"));
getContentResolver().delete(Uri.parse("content://sms/"), "_id="+id, null);
在第一个活动类中收到短信后,使用此代码删除最后一条短信。不要忘记 在mainfest文件中切换sms读写权限
int id = cursor.getInt(cursor.getColumnIndex("_id"));
getContentResolver().delete(Uri.parse("content://sms/"), "_id="+id, null);
不,我需要删除新收到的短信。但它没有删除,它只删除此号码中的旧短信。某些效果与第一篇文章中的效果相同。不,我需要删除新收到的短信。但它没有删除,它只删除此号码中的旧短信。某些效果与第一篇文章中的效果相同。不是删除新收到的短信:(使用BroadcastReceiver删除传入消息。某些效果与第一篇文章相同。它不是删除新传入的sms:(使用BroadcastReceiver删除传入消息)。