Search code examples
androidiosandroid-permissionsprivacy

How generous are privacy-related permissions on Android and iOS?


I have a few questions about privacy protection on Android and iOS. I've looked at Android documentation, but as a beginner I am not sure if I understand correctly (I put my understanding in square brackets). Especially, not finding the obvious way does not mean there are no workarounds to get the same information. Therefore, could any developer give advice on the following questions? Answers about iOS are also appreciated.

  • Can the user allow an app to use the microphone/camera/location only once (i.e. the system should always ask the user every time this app needs access)? [No, the "never ask again" option in the dialog is not meant for this purpose.]
  • If microphone/camera/location permission is given to an app, can it access these while in background? [Yes.]
  • Is it possible for an app (running in foreground) to obtain the list of other apps currently running or installed on the device? [Yes for installed ones, not sure about currently running ones.]
  • Can an app in background know what other apps are currently running and which one is in foreground? Can it possibly figure out whether the user is using the phone? [Not sure.]
  • Can an app (apart from the OS itself) take screenshots? [No.]

Solution

  • With regards to Android:

    Can the user allow an app to use the microphone/camera/location only once (i.e. the system should always ask the user every time this app needs access)?

    Not directly. They could have this effect by granting the permission, using the app, then going into Settings and revoking the permission. I suspect that few people do this. Offering a one-time-use-only option directly in the runtime permission dialog is an interesting option, though I suspect that Google would pass on it as making the flow too complicated.

    If microphone/camera/location permission is given to an app, can it access these while in background?

    Locations, yes, though with some limits on Android 8.0+ (for power savings). Microphone/camera, yes, though reportedly no longer starting with Android P.

    Is it possible for an app (running in foreground) to obtain the list of other apps currently running or installed on the device?

    Installed, yes. Running, not really, on newer versions of Android.

    Can an app in background know what other apps are currently running

    See above.

    and which one is in foreground?

    Not really, on newer versions of Android.

    Can it possibly figure out whether the user is using the phone?

    You can tell if the screen is on. IMHO, "whether the user is using the phone" has lots of possible definitions.

    Can an app (apart from the OS itself) take screenshots?

    I do not know how you are drawing the distinction here. An app can request screenshots and screen recordings through the media projection APIs on Android 5.0+, though this involves user acceptance. This acceptance is a one-time-per-process thing, so the user would have to grant access again in the future (akin to what you were seeking for microphone/camera/location).