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

Chemistry - Bond Angles In NH3 And NCl3

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?