短信收到,不通知

UAS*_*UAS 10 sms android broadcastreceiver

我想在我的应用程序中收到短信,但我不希望我的Android显示有关该事件的通知.算法:

  1. 收到短信(没关系)

  2. 如果这是具有特殊内容格式的短信(对于我的应用) - 使用我的应用处理它并且不显示通知.

  3. 如果这是一条简单的消息 - 我不想处理它,所以必须显示通知.

我试图使用有序广播,但它没有帮助.在某处我读到SMS_RECEIVE的广播没有订购,但我看到了一些应用程序,可以在没有通知的情况下接收短信.

有没有人可以帮助我或告诉我解决这个问题的正确方法?

abortBroadcast()在广播中呼叫没有帮助

Pra*_*pat 7

在清单中的intent-filter //中设置优先级

<intent-filter android:priority="100">  /*your receiver get high priority*/
Run Code Online (Sandbox Code Playgroud)

//在广播接收器中

 if (keyword_match)
      {
        // Stop it being passed to the main Messaging inbox
        abortBroadcast();
      }
Run Code Online (Sandbox Code Playgroud)


Dan*_*n J 5

这应该可以通过注册您的应用程序来接收SMS消息,然后在检测到您的消息到达时使用abortBroadcast().你说abortBroadcast()不起作用 - 短信接收器肯定会处理短信吗?

对于其他想要这样做的人,请继续阅读......

首先,在AndroidManifest.xml中声明SMS接收器,并确保该应用程序有权接收SMS消息.

 <receiver android:name="mypackage.SMSReceiver">
   <intent-filter>
     <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
   </intent-filter>
 </receiver>

<uses-permission android:name="android.permission.RECEIVE_SMS" />
Run Code Online (Sandbox Code Playgroud)

以下是处理SMS消息的一些示例代码:

public class SMSReceiver extends BroadcastReceiver
{
  @Override
  public void onReceive(Context context, Intent intent)
  {
    Bundle extras = intent.getExtras();

    Object[] pdus = (Object[])extras.get("pdus");
    for (Object pdu: pdus)
    {
      SmsMessage msg = SmsMessage.createFromPdu((byte[])pdu);

      String origin = msg.getOriginatingAddress();
      String body = msg.getMessageBody();

      // Parse the SMS body
      if (isMySpecialSMS)
      {
        // Stop it being passed to the main Messaging inbox
        abortBroadcast();
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


tyc*_*czj 0

不确定我是否确切知道您要做什么,但据我了解,您只是想知道如何不发送通知?

你为什么不能这样做:

If(instance 2){
//do your processing
}else{
//send notification
}
Run Code Online (Sandbox Code Playgroud)

如果你的意思是你想阻止操作系统广播它那么你可能会运气不好,因为我不相信你能做到这一点