We currently manage an application that is sold exclusively to businesses, but users can use the application on any device. Our app requires location services to be on to function properly but does not require location services to run all functionality. The location of the users is proving to be business critical information though and we are receiving more requests to force users to turn on location before using any of the app. How best do we encourage users/ force malicious users to turn on location services on the device and not turn it off?
It seems to me that you have a value delivery problem for business and returning this into benefit to users. If you need the feature of geolocation has to be mandatory, show them very clear in the beginning of the use with a walkthrough or small hints.
Some apps asking to turn on resources like gps, before the user start to explore the interface (moovit) and others only when you will share some information with the community or a friend through the app (facebook).
You shouldn't ever force your users to do something. As soon as you start doing that, you will begin to quickly lose users. Users need to be given an incentive to turn it on and keep it on. If your users don't feel like they are getting a good enough deal from what your application has to offer, they will not keep it on.
The best approach would be to softly remind users with Android's built in notifications that their location that they are not receiving the full functionality. So once every couple days or so, the user would get something like the image below on their lock screen. That way, the user will know that they are not using the app to it's highest potential.