Broadcast Receiver Not Working For SMS


Answer :

Try declaring your receiver as the following :

<receiver android:name=".SmsReceiver" android:permission="android.permission.BROADCAST_SMS" android:exported="true">     <intent-filter android:priority="5822" >         <action android:name="android.provider.Telephony.SMS_RECEIVED" />     </intent-filter>  </receiver> 

this works just fine for me , I only added a flag to tell that this receiver is exported.

Edit: I forgot to add the priority to the intent filter. use high number for the priority.


Found a topic that answers my doubt: Suppress / Block BroadcastReceiver in another app.

Even with the priority set to the maximum possible (999), if another app has the same priority, in this case the Handcent SMS app, the first application that will receive the broadcast is the one that was first installed by the user.

In my case was the Handcent SMS and because it aborts the broadcast when receiving it, my app doesn't receive anything.


As @Maxim Toyberman said, you need to ask for permission at runtime (as explained here https://stackoverflow.com/a/35972161/3427883 )

basically you need to make sure you have the permission to Receive the SMS as following

        if (ContextCompat.checkSelfPermission(this,             Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {         ActivityCompat.requestPermissions(this,                 new String[]{Manifest.permission.RECEIVE_SMS}, 1); 

Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable