[1] http://repo.xposed.info/module/org.synergylabs.pmpandroid
For example, I think PMP doesn't have options to filter loading native libraries or executing external commands - and this is sometimes useful, e.g. by blocking loadLibrary calls for libYandexMetricaNativeModule.so (some apps would crash, some would survive and would probably leak less analytics)
I believe both tools (and anything Xposed-based) isn't perfect, though - native code can work around this stuff. I wonder if there's QubesOS-like Android-in-Android (using a virtualization) solution exists, besides that Samsung's proprietary enterprisey nonsense...
All those apps receive android.intent.action.PHONE_STATE broadcasts whenever the phone state changes (new call, etc), and for the incoming calls that intent's data always (AFAIK, maybe some firmware builds have privacy controls for this) contains the phone number.
If "read phone state" is listed then the app knows who's calling you, in a sense system feeds this data. Whenever the app uses it or not depends on how shady it is.
[1] http://repo.xposed.info/module/de.robv.android.xposed.instal...
[2] https://github.com/M66B/XPrivacy