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
Post a Comment