Permission denial on BroadCast SMS intent

2019-06-01 06:34发布

问题:

can my activity broadcast this intent from itself

Intent i = new Intent("android.provider.Telephony.SMS_RECEIVED");

sendBroadcast(i);

I am able to send this broadcast and receive it back (from a broadcast receiver setup in the application) , but this is not a global broadcast , i.e. it is not received by the default SMS application. furthermore i am getting this error in the logcat

Permission Denial: broadcasting Intent { act=android.provider.Telephony.SMS_RECEIVED } from com.smartanuj.scale (pid=3572, uid=10029) requires android.permission.BROADCAST_SMS due to receiver com.android.mms/com.android.mms.transaction.PrivilegedSmsReceiver

I have already specified

 <uses-permission> android:name="android.permission.BROADCAST_SMS"></uses-permission>

in my manifest file

回答1:

Only applications signed with the system key may broadcast the arrival of new SMS messages.



回答2:

You only need to have the BROADCAST_SMS privilege, and to generate the PDU by yourself. Then it works. You can find a summary here: http://blog.dev001.net/post/14085892020/android-generate-incoming-sms-from-within-your-app (second part, "Doing it by generating a SMS_RECEIVED broadcast").