android - 短信接收没有通知android 4.4.2

标签 android notifications sms

我想在我的应用程序中接收短信,但我不希望我的 Android 显示有关该事件的通知。

我是声明

<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" />

写代码

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();
      }
    }
  }
}

并尝试设置优先级

<intent-filter android:priority="100">

但是不行!手机显示通知!

拥有 Android 4.4.2 (API 19) (Samsung Note 3)

最佳答案

从 KitKat (4.4) 开始,您的应用需要成为默认的 SMS 应用才能抑制通知,因为默认应用负责发出通知。尝试中止 SMS_RECEIVED 广播不再有效。系统会忽略任何中止该广播的尝试。此外,默认应用会监听 SMS_DELIVER 广播,该广播也无法中止,因为它仅传送给默认应用。您可以引用以下链接,了解有关使您的应用有资格成为默认 SMS 应用的信息。

Getting Your SMS Apps Ready for KitKat

关于android - 短信接收没有通知android 4.4.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26075807/

相关文章:

android - 在 Android KitKat 上中止 SMS Intent

android - 如何删除 Android 5.0 版 lollipop 或 Kitkat 中的特定收件箱消息?

android - Intent 发送不是 Intent 接收

android - 为什么我们需要使用 <uses-feature> 属性?

Java Swing TrayIcon 气球消息 - 实现与主图标不同的 Action 监听器?

javascript - 以正确的顺序执行 javascript Ajax 和非 ajax 调用

java - 无法让所有UI组件出现在RelativeLayout中

java - 如何计算表 "A"中列中每个值的出现频率并使用 Android 应用程序中的 SQLite 插入表 "B"

android - 收到通知时点亮屏幕android

sms - 解释短信UDH header 08 07 01 03 00 03 08 02 02?