Status Update
Comments
te...@gmail.com <te...@gmail.com> #2
Forgot to mention - for wifi signal metering purposes, it would even be fine to drop BSSIDs so there are no MAC addresses in the results obtained by startScan(). It would be nice to have them as they can be used to get the manufacturer of the device based of the first 3 bytes of MAC but I guess it's not super-critical. Also, there's a half-way possibility to keep only the first 3 bytes of the MAC so the manufacturer can be obtained but pad the remaining 3 bytes with 0s so it's not unique.
ad...@google.com <ad...@google.com>
ad...@google.com <ad...@google.com> #3
We have passed this to the development team and will update this issue with more information as it becomes available.
te...@gmail.com <te...@gmail.com> #4
Maybe one more idea - I think it would make sense to have some special "RestrictedActivity" in Android which would guarantee it has no connection with the outside world - this would include the Internet and LAN, access to disk, passing data to any other app or the app from which it was launched, etc.. When you have such an isolated environment where no data can leak outside, you can enable access to arbitrary sensitive information by default - there's no way the app could misuse such an information and the only meaningful thing the app can do is to display the data to the user. This also eliminates user's confusion and the danger that users enable some permissions without considering the consequences - users wouldn't have to be asked at all in such a mode so the result would be simpler for users and safer as well.
One of the APIs that could be used in such a mode would be the WifiManager.startScan() API or its alternative but it could also be any of the READ_* APIs from here:
https://developer.android.com/reference/android/Manifest.permission.html
One of the APIs that could be used in such a mode would be the WifiManager.startScan() API or its alternative but it could also be any of the READ_* APIs from here:
ma...@gmail.com <ma...@gmail.com> #5
There has been no answer to this question even though the situation is confusing. E.g. new WifiRttManager requires fresh list of Wifi scan results, but the only way to get a fresh list is to use deprecated startScan() function which is now limited to couple of queries per minute. What is the plan with Wifi scan results?
WifiRttManager documentation:
https://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager
WifiRttManager documentation:
ad...@google.com <ad...@google.com> #6
We've deferred this issue for consideration in a future release. Thank you for your time to make Android better.
ad...@google.com <ad...@google.com> #7
In case you want to provide more information with respect to this bug, please file a bug in AOSP via "https://goo.gl/TbMiIO ".
Description
This method was deprecated in API level P.
The ability for apps to trigger scan requests will be removed in a future release.
It's not clear what your plans with app's access to surrounding wifi networks are - will there be a different API or do you plan to disallow accessing this information completely?
It's clear the current situation is quite a disaster from a privacy point of view. A year ago I submitted this issue:
with no resolution as of now so in Android P developer preview apps using older Android API can still access the wifi network information and possibly obtain user's location based on that. On the other hand, my apps
use the new API and are required to have the location permission but it turns out to be super-confusing for users and I get lots of questions and bad ratings saying things like "Why does the app need GPS to show wifi networks?" (users don't really distinguish between GPS and location permission).
Finally, apps having the location permission for some other reason shouldn't have an automatic access to startScan() results because this is a completely different kind of information and this way apps can build offline databases of wifi hotspots even when they aren't network-related in any way.
So, clearly, the current situation is far from ideal but there are still legitimate uses of wifi signal scanning as users need to set up their home networks. In my opinion, there should be a new "scartScanV2()" API which requires:
1. A new runtime permission that would give users a message like "The app wants to access detailed information about neighboring wifi networks which can be used to obtain your location and for user tracking."
2. The permission could even be hidden somewhere in Android settings and users would have to navigate there manually to enable it - this would eliminate "newbies" permitting just about everything to enable it without understanding what they are doing.
3. For apps distributed through the Play Store you could check if they require this permission and if they do, add some additional dialog developers would have to confirm saying something like "I confirm that the app doesn't collect the data obtained by startScan() and that they don't leave the device. Violating this agreement will result in app's removal from the Play Store."
I really hope there will still be some startScan() alternative for network tools apps in post-P Android versions as this feature is really useful for end users and many users need it.