Where's the reference that you needed READ_PHONE_STATE to suspend your app? Shouldn't the app be automatically suspended when the caller app goes into the foreground?
The Facebook app itself is the real issue as both the Facebook app and Facebook Messenger require everything including READ_PHONE_STATE and contact permissions and pretty much everything[1][2].
> Where's the reference that you needed READ_PHONE_STATE to suspend your app? Shouldn't the app be automatically suspended when the caller app goes into the foreground?
Mostly for analytics and social platforms to access unique identifier for analytics you needed it such as in Unity up to 2015 [3][4].
> The Android build enforces READ_PHONE_STATE if the code has references to SystemInfo.deviceUniqueIdentifier. INTERNET is added when any network classes are referenced. ACCESS_NETWORK_STATE is added when calling Application.internetReachability
Also, early on it was required for saving state and or ensuring the app didn't crash. Mobile OSes were moving fast and without it the apps didn't auto suspend which they mostly do now. You can see some of this discussion in the links I included above. Anything older than Android Ice Cream required it as well.
It is added in by many plugins as well such as Google Game Play Services or other Analytics packages that most people didn't check. There was a reason the market was and is flooded with analytics packages.
It seems to re-pop up in analytics packages quite a bit and many aren't checking close enough per this example 2016 [4][5][6][7].
Largely it is due to people just building and shipping fast, there are other things that trigger it but the most common are doing things on suspend when a call comes in or to help allow the music to play in your game/app and turn off when a call comes in or analytics packages.
For the most part it is not needed now but up to 2016 it still was in many areas since Android started.