Note that there are some explanatory texts on larger screens.

plurals
  1. POBroadcast receiver priority - Only recieve one broadcast - SMS App- ANDROID
    text
    copied!<p>I'm currently developing a sms app, I'm having trouble getting the sms's received. I changed the priority in my manifest to </p> <pre><code>&lt;intent-filter android:priority="2147483647" &gt; &lt;action android:name="android.provider.Telephony.SMS_RECEIVED" /&gt; &lt;/intent-filter&gt; </code></pre> <p>BROADCAST CLASS :</p> <pre><code>public class SMSReceiver extends BroadcastReceiver { private final String ACTION_RECEIVE_SMS = "android.provider.Telephony.SMS_RECEIVED"; private SmsModel newSMS; private static final String TAG = "SMSReceiver"; @Override public void onReceive(Context mContext, Intent intent) { Log.i("TEST","TEST"); /** * RECEPTION SMS */ Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i = 0; i &lt; pdus.length; i++) { msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); from = msgs[i].getOriginatingAddress(); content = msgs[i].getMessageBody().toString(); } Log.d("FIRST BROADCAST RECIEVER", "##### incoming sms from : " + from); } this.context = context; bundle = intent.getExtras(); if (bundle != null) { Object[] pdusObj = (Object[]) bundle.get("pdus"); SmsMessage[] messages = new SmsMessage[pdusObj.length]; // getting SMS information from Pdu. for (int i = 0; i &lt; pdusObj.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]); } for (SmsMessage currentMessage : messages) { sender = currentMessage.getDisplayOriginatingAddress(); msg = currentMessage.getDisplayMessageBody(); Log.d("Sender::",sender); Log.d("Msg::",msg); } // if (intent.getAction().equals(ACTION_RECEIVE_SMS)) { // RECUPERE SMS bundle = intent.getExtras(); Object[] pdus = (Object[]) bundle.get("pdus"); // RECONSTRUIRE SMS messages = new SmsMessage[pdus.length]; for (int i = 0; i &lt; pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } if (messages.length &gt; -1) { // AFFECTE NUM_TEL + MSG + THREAD_ID final String messageBody = messages[0].getMessageBody(); final String phoneNumber = messages[0] .getDisplayOriginatingAddress(); int thread_id = ConversionFactory.getThreadIDfromNumber(phoneNumber); // AJOUT SMS DANS BOITE DE RECEPTION ANDROID + RECUPERATION NOUVEAU ID SMS ContentValues values = new ContentValues(); values.put("address", phoneNumber); values.put("body", messageBody); Uri uri = mContext.getContentResolver().insert(Uri.parse("content://sms/inbox"), values); // SI LA THREAD EXISTE... if(thread_id != -1) { // CREATION NOUVEAU SMS newSMS = new SmsModel(Integer.parseInt(uri.getLastPathSegment()), thread_id, messageBody, phoneNumber, 0, System.currentTimeMillis(), "receieved"); // AJOUTE DANS LA CONVERSATION AllConversations.getInstance().getConversation(thread_id).ListeSms.put(String.valueOf(Integer.parseInt(uri.getLastPathSegment())), newSMS); // SI L'UTILISATEUR EST DANS LA CONVERSATION(ACTIVTY) DU NOUVEAU SMS if(thread_id == ((VariablesService)mContext.getApplicationContext()).mScheduleMessage.getItem(0).getThreadId()) { // AJOUT DANS LISTVIEW MESSAGE ((VariablesService)mContext.getApplicationContext()).mScheduleMessage.add(newSMS); } for (int i=0; i&lt;((VariablesService)mContext.getApplicationContext()).mScheduleConversation.getCount();i++) { if (((VariablesService)mContext.getApplicationContext()).mScheduleConversation.getItem(i).getThreadId() == thread_id) { ((VariablesService)mContext.getApplicationContext()).mScheduleConversation.remove(((VariablesService)mContext.getApplicationContext()).mScheduleConversation.getItem(i)); newSMS.setContactName(mContext, newSMS.getNumber()); ((VariablesService)mContext.getApplicationContext()).mScheduleConversation.insert(newSMS, 0); Log.i("ENTRER", ((VariablesService)mContext.getApplicationContext()).mScheduleConversation.getItem(i).getMessage()); } } // ENVOYER BROADCAST Intent returnintent=new Intent("RECIEVE_INTENT_FROM_BROADCAST"); mContext.sendBroadcast(returnintent); Log.i(TAG, newSMS.toString()); } //VIBRATOR Vibrator v; v=(Vibrator)mContext.getSystemService(Context.VIBRATOR_SERVICE); v.vibrate(1000); } </code></pre> <p>XML</p> <pre><code> &lt;receiver android:name="com.application.reciever.SMSReceiver" class="com.application.reciever.SMSReceiver" android:exported="true"&gt; &lt;intent-filter android:priority="999" &gt; &lt;action android:name="android.provider.Telephony.SMS_RECEIVED" /&gt; &lt;/intent-filter&gt; &lt;/receiver&gt; </code></pre> <p>LOGCAT:</p> <pre><code>11-17 11:49:08.570: I/MESSAGE(25588): Sending SMS ! 11-17 11:49:08.590: I/ConversationActivity(25588): SMS Sent. 11-17 11:49:10.820: I/bcsms(25588): 3424 - 46 - tts - +33610030697 - 17-11-2012 - 1353149350823 - receieved 11-17 11:49:10.830: I/BROADCAST(25588): GOT THE INTENT 11-17 11:49:11.570: D/OpenGLRenderer(25588): Flushing caches (mode 1) 11-17 11:49:12.330: W/IInputConnectionWrapper(25588): showStatusIcon on inactive InputConnection 11-17 11:49:14.940: D/dalvikvm(25588): GC_CONCURRENT freed 293K, 8% free 8141K/8775K, paused 2ms+8ms 11-17 11:49:18.670: I/MESSAGE(25588): Sending SMS ! 11-17 11:49:18.680: I/ConversationActivity(25588): SMS Sent. 11-17 11:49:21.860: D/OpenGLRenderer(25588): Flushing caches (mode 1) 11-17 11:49:22.120: W/IInputConnectionWrapper(25588): showStatusIcon on inactive InputConnection </code></pre> <p>As you can see I don't receive the second SMS in the reciever, any ideas?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload