I know the recomended way to know in Android if a location is a fake point is something like this:
boolean isMock = false;
if (android.os.Build.VERSION.SDK_INT >= 18) {
isMock = location.isFromMockProvider();
} else { // Old Android versions (<6)
isMock = !Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
}
So, for current Androids I have to request location permission to know if this is a mock location. But I think it is not necessary if I can read "select mock location app".
Also, if you want to show an alert message you can custom this message. e.g.: You could say something like this: "Please remove com.lexa.fakegps app". And when user clicks on "Accept", you could redirect to next link: https://play.google.com/store/apps/details?id=com.lexa.fakegps
Also, there are fake gps apps that return false in the isFromMockProvider method.
Also, you can do stats with apps more use for yours users.
And finally, I don't understood why you can read every setting of developer settings except "select mock location app":
https://developer.android.com/reference/android/provider/Settings
Is there any solution? Or simply is it a stupid impossible thing?