2014-01-05 33 views
0

我试图通过使用广播接收器拦截收到的短信。下面是代码:在KitKat中隐藏短信通知与广播接收器

<receiver android:name=".receivers.SmsReceiver" android:enabled="true" 
     android:exported="true" android:priority="999"> 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

和:

public class SmsReceiver extends BroadcastReceiver { 
    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (SMS_RECEIVED.equals(intent.getAction())) { 
     this.abortBroadcast(); 

     Bundle bundle = intent.getExtras(); 
     if (bundle != null) { 
      // get sms objects 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      if (pdus.length == 0) { 
       return; 
      } 
      // large message might be broken into many 
      SmsMessage[] messages = new SmsMessage[pdus.length]; 
      StringBuilder sb = new StringBuilder(); 
      for (int i = 0; i < pdus.length; i++) { 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       sb.append(messages[i].getMessageBody()); 
      } 
      String sender = messages[0].getOriginatingAddress(); 
      String message = sb.toString(); 

      Log.d("sms", sender); 
      Log.d("sms", message); 
     } 
    } 
} 
} 

的短信被拦截罚款,但股票的Android的短信应用仍表现出了通知,我还可以发现,股票应用SMS内部消息名单。

有什么方法可以停止股票短信应用程序通知,并避免消息出现在其列表中?

+0

尝试'setResultData(空)'加上'abortBroadcast()' – hgoebl

+0

现在想,敬请期待! – iGio90

+0

不工作:((((( – iGio90

回答

0

你需要调用abortBroadcast();,看到我的回答communication between two device using sms

如果您运行的是Android 4.4奇巧,它似乎是越来越难做了这些事情,并没有看过,但我自己。

+0

是的,如我的代码所示,我叫它!是啊...我正在运行kitkat! – iGio90

+0

对不起没有注意到但是是的,那不是你的代码,而是你正在面临的问题与KitKat的变化。答案 – cYrixmorten

+0

当然,如果我找到一种方法,我会在这里添加一个答案并给你加标签!同时感谢支持!如果你在我之前找到了解决方案,那么请做同样的事:D – iGio90

0

正如你所说你正在运行KitKat,那么答案是 - 你不能静音默认的短信应用程序。你也可以接收消息或发送(这就是为什么你会收到消息),但仍然不能“消费”消息。

+0

10你好Marcin。也许你知道我们是否可以在股票应用程序获取之前编辑发件人和消息等数据,以便消息应用程序将显示自定义数据而不是原始数据? – iGio90

+0

不,您不能篡改消息。 –

0

如果用户已将您的应用程序设置为默认的短信应用程序,那么他/她将不会收到短信通知。您必须处理通知以及应用程序中SMS的其他功能。

欲了解更多信息read this blog.

退房other blogsample app.