有人可以帮我解除通知并删除android 6.0.0 (marshmallow)
及以上收到的邮件吗?
我尝试了abortbroadcast()
,但它无效。
这是我的代码:
public class SMSReceiver extends BroadcastReceiver {
LocationManager lm;
LocationListener locationListener;
String senderTel;
Context context;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
this.context = context;
SmsMessage[] msgs = null;
String str = "";
if (bundle != null) {
senderTel = "";
Log.e("Broadcast ", "called");
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
if (msgs != null) {
Log.e("Broadcast", "msg read");
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
if (i == 0) {
senderTel = msgs[i].getOriginatingAddress();//getting Number
}
abortBroadcast();
}
}}
答案 0 :(得分:0)
我假设此特定BroadcastReceiver
正在监听Telephony.Sms.Intents.SMS_RECEIVED_ACTION
。
该特定广播由系统InboundSmsHandler
here发送。
当系统广播SMS_RECEIVED_ACTION
时,您会注意到,广播不仅仅与context.sendOrderedBroadcast()
一起运行;而是通过context.sendOrderedBroadcastAsUser()
为每个正在运行的用户发送。
在Android上,每个应用程序都以自己的用户身份运行。
这意味着每个有权接收SMS消息的应用程序都会为每条SMS消息获得自己的广播,而您的应用程序无法阻止其他应用程序通过调用abortBroadcast()
来接收该广播。
但是,呼叫abortBroadcast()
应该阻止您自己的应用程序中的任何未来的BroadcastReceiver接收该广播。