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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
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 android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to