Exactly - I consider it perfectly fine to request a permission for _receiving_ - and I do exactly this :
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> But I have no <permission> attribute in the manifest - so the relevant quote from the docs<http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn>: "The name of a permission *that broadcasters** *must have to send a message to the broadcast receiver. If this attribute is not set, *the permission set by the <application> element's permission attribute applies to the broadcast receiver.* " Does not really apply. So it is strange that no warning is issued Quick tests (as in I just changed the Manifest - did not uninstall reinstall) suggest that android:exported="false" does not make a difference - adding android:exported="false" does not prevent the system from calling my receiver (Froyo) * Quick* tests BTW - there is a bug with android.permission.RECEIVE_BOOT_COMPLETED" - still NEW http://code.google.com/p/android/issues/detail?id=14044 On Monday, May 6, 2013 1:26:26 AM UTC+3, Piren wrote: > > Why not ask for a permission for receiving? that's the same as there are > permissions for reading contacts or call logs... the idea is to inform the > user your app is doing something that they might not want to happen, like > informing you the device just powered on which can be used to start an app > without them knowing. Permissions aren't just for modifying things. > > You don't define permission for the broadcaster since that broadcast is a > system broadcast... > > On Monday, May 6, 2013 1:13:27 AM UTC+3, Palmer Eldritch wrote: > >> What confuses me really is that I request a permission for _receiving_ a >> particular intent (whose action is boot_completed) - I do not define >> anywhere a permission the _broadcaster_ must request/hold >> >> Thanks >> >> PS : testing vs asking - I found about the >> android.intent.action.QUICKBOOT_POWERON permission while browsing for an >> answer to this question - don't think I need it but added it :) >> >> On Monday, May 6, 2013 12:18:25 AM UTC+3, Piren wrote: >>> >>> I'm not 100% positive only the system can call it, but i'm pretty sure >>> about it. It depands on the security level of that specific permission and >>> these are not easy to find out (i can't recall any documentation that lists >>> that.. i think it is only available in the source code). It's something >>> that you need to remember, some of these calls can only be made by the >>> system... some of these, were only blocked to be system only in later >>> versions of android (and as usual, there's barely any documentation of >>> these) so sometimes code that worked before, just stops working. >>> >>> To test Boot_Completed, just restart your device. that's why i did, >>> that's also how i found our some HTC devices require you to also >>> use "android.intent.action.QUICKBOOT_POWERON" (another tip ;-)) and don't >>> forget you need the app to run at least once before (yet another tip :-D) >>> >>> If you want 0 warnings, tell the compiler to stop showing them :) >>> >>> >>> On Sunday, May 5, 2013 11:07:12 PM UTC+3, Palmer Eldritch wrote: >>> >>>> >>>> On Sunday, May 5, 2013 6:58:39 PM UTC+3, Piren wrote: >>>>> >>>>> Did you read the answer you quoted? >>>>>> >>>>>> "IF you didnt set any permissions for it." >>>>> >>>>> >>>>> And back to my first answer, had you read the docs you would have seen >>>>> this: >>>>> >>>>>> "The name of a permission that broadcasters must have to send a >>>>>> message to the broadcast receiver. If this attribute is not set, the >>>>>> permission set by the >>>>>> <application><http://developer.android.com/guide/topics/manifest/application-element.html> >>>>>> element's >>>>>> permission<http://developer.android.com/guide/topics/manifest/application-element.html#prmsn> >>>>>> attribute >>>>>> applies to the broadcast receiver. " >>>>> >>>>> >>>>> Now, you didn't provide the Permission attribute of you manifest (nor >>>>> the Uses-Permissions), but i'd bet a pretty penny that it has >>>>> receive_boot_completed there...since you know.. it doesn't work without >>>>> it. >>>>> >>>> >>>> This makes sense - so since I ask for receive_boot_completed the >>>> system checks my intent filter, sees the intent I filter for is >>>> "android.intent. >>>> action.BOOT_COMPLETED" and automatically applies this permission to my >>>> receiver ? So this receiver _requires permission_ and no warning is issued >>>> That is not so straightforward - does it mean that only the system can >>>> call my receiver ? >>>> >>>> >>>>> >>>>> BTW, some of the questions are just plain annoying which is why i >>>>> ignored them and just let you figure it out yourself with the docs... >>>>> "Does it mean that it won't work if exported="false" ?" Why are you >>>>> asking us? Instead of posting a question about it, isn't it easier to >>>>> just >>>>> do a quick test instead of relying on the memory of other people? You >>>>> already have the code ready.. just run the damn thing and check. >>>>> >>>> I could test in this case yes - but i wanted a general answer on all >>>> similar intent filters and moreover i have no other app to call my >>>> receiver >>>> from - it's not a quick test >>>> >>>> >>>>> >>>>> Also, considering this is only a warning, you're giving it way too >>>>> much emphasis. >>>>> >>>> >>>> I disagree - I do pay attention to warnings - I want none :) >>>> >>>>> >>>>> >>>>> On Sunday, May 5, 2013 6:29:52 PM UTC+3, Palmer Eldritch wrote: >>>>>> >>>>>> Did you read the question ? >>>>>> >>>>>> " >>>>>> If Exported=True or Exported is not set and it has an Intent Filter, >>>>>> you get a warning saying you didn't specify any permissions for it IF >>>>>> you >>>>>> didnt set any permissions for it. >>>>>> " >>>>>> >>>>>> I HAVE an intent filter and I get NO warning - I have posted the >>>>>> manifest and specific questions >>>>>> Please read before posting - I feel a bit offended being redirected >>>>>> to the docs after the effort I put in asking this >>>>>> >>>>>> On Sunday, May 5, 2013 10:22:07 AM UTC+3, Piren wrote: >>>>>>> >>>>>>> Did you read the docs? what's not to get here? >>>>>>> >>>>>>> http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn >>>>>>> >>>>>>> If Exported=False or not set and no IntentFilter, only your app can >>>>>>> access it so it needs no permissions thus no warning. >>>>>>> If Exported=True or Exported is not set and it has an Intent Filter, >>>>>>> you get a warning saying you didn't specify any permissions for it IF >>>>>>> you >>>>>>> didnt set any permissions for it. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Saturday, May 4, 2013 3:47:06 PM UTC+3, Palmer Eldritch wrote: >>>>>>>> >>>>>>>> Still interested in this >>>>>>>> >>>>>>>> 1. Why there is no warning : >>>>>>>> >>>>>>>> <receiver <!-- no warning --> >>>>>>>> android:name=".receivers.TriggerMonitoringBootReceiver" >>>>>>>> android:enabled="false" > >>>>>>>> <intent-filter> >>>>>>>> <action >>>>>>>> android:name="android.intent.action.BOOT_COMPLETED" /> >>>>>>>> </intent-filter> >>>>>>>> </receiver> >>>>>>>> >>>>>>>> Does it mean that it won't work if exported="false" ? In this case : >>>>>>>> >>>>>>>> 2. Which intents are meant to be exported with no warnings ? All >>>>>>>> the intents in android.intent.action. namespace ? >>>>>>>> >>>>>>>> There are reports that contradict that - adding to general >>>>>>>> confusion. >>>>>>>> See for instance : >>>>>>>> >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/11462936/exported-activity-does-not-require-permission-when-attempting-to-launch-from-a/11526028#comment18783318_11526028 >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/11875371/what-permission-should-i-use-to-receiver-of-android-notitications#comment15822652_11875525 >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/13517128/android-onbootreceiver-exported-receiver-does-not-require-permission#comment23027535_13517128 >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/16112470/android-exported-receiver-does-not-require-permission-on-receivers-meant-to >>>>>>>> http://stackoverflow.com/a/12180426/281545 >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/12718231/making-nfc-activity-private-without-androidexported-false >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/14381807/how-to-stop-opening-the-application-from-other-application-in-android/14381976#14381976 >>>>>>>> >>>>>>>> As you see both black and white are true so I would appreciator >>>>>>>> some official feedback >>>>>>>> In short - when one has receivers that receive System intents like >>>>>>>> "android.intent.action.BOOT_COMPLETED" and >>>>>>>> "android.net.wifi.SCAN_RESULTS" >>>>>>>> - setting the `exported="false"` will prevent the receivers from >>>>>>>> working ? >>>>>>>> Is this the reason why "Exported receiver does not require permission" >>>>>>>> warning is not displayed ? Which intents fall into this category ? >>>>>>>> >>>>>>>> Thanks :) >>>>>>>> >>>>>>>> On Saturday, April 20, 2013 3:44:52 PM UTC+3, Palmer Eldritch wrote: >>>>>>>>> >>>>>>>>> I have the following receivers declared : >>>>>>>>> <pre> >>>>>>>>> <receiver <!-- no warning --> >>>>>>>>> android:name=".receivers.TriggerMonitoringBootReceiver" >>>>>>>>> android:enabled="false" > >>>>>>>>> <intent-filter> >>>>>>>>> <action >>>>>>>>> android:name="android.intent.action.BOOT_COMPLETED" /> >>>>>>>>> </intent-filter> >>>>>>>>> </receiver> >>>>>>>>> <receiver <!-- no warning --> >>>>>>>>> android:name=".receivers.ScanResultsReceiver" >>>>>>>>> android:enabled="false" > >>>>>>>>> <intent-filter> >>>>>>>>> <action android:name="android.net.wifi.SCAN_RESULTS" /> >>>>>>>>> </intent-filter> >>>>>>>>> </receiver> >>>>>>>>> </pre> >>>>>>>>> >>>>>>>>> These receivers are exported - right ? If I put `exported="false"` >>>>>>>>> would they still be able to work ? >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> >>>>>>>> -- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

