I believe that is just a wording issue... Permission/Uses-Permission are probably the same... Seems to me that if you declare something in "Uses-Permission" it also means it is in the Permissions list.. kinda hard to use something without allowing it :)
On Tuesday, May 7, 2013 10:10:46 PM UTC+3, Palmer Eldritch wrote: > > 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.

