2014-01-05 133 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.