Hola,
Como ya indico Erel, el activar/desactivar por programa el gps desde la version android 2.3 (si mal me acuerdo) no se puede, no asi con el modo avion (al menos en lo que he probado) que podes controlar por programa.
Para controlar el gps por programa (como no se puede activar y desactivar) he optado crear un servicio que monitorea si el gps de forma permanente si esta activo o no, para eso hago lo siguiente:
Sub GPSx_UserEnabled(Enabled As Boolean)
If GPSx.GPSEnabled = False Then
Comments = "gps desactivado"
ToastMessageShow("EL GPS ESTA INACTIVO ... POR RAZONES OPERATIVAS SE REQUIERE QUE EL GPS ESTE SIEMPRE ACTIVO ... ESTA ES UNA OPORTUNIDAD CORREGIR ESTE INCONVENIENTE ... ¡¡¡ ACTIVELO !!! ... PARA QUE ESTE PROCESO SEA RAPIDO Y ESTE MENSAJE DESAPAREZCA ... ES RECOMENDABLE NO ESTAR BAJO NINGUNA ESTRUCTURA (TECHO, LOZA, etc) Y QUE SE MUEVA LO MENOS POSIBLE HASTA TOMAR POSICION", True)
StartActivity(GPSx.LocationSettingsIntent)
End If
End Sub
StartActivity le lleva a la pantalla que le permite marcar la activacion del gps.
Con el toast (tan largo) molestando a cada al usuario rato no le va quedar otra alternativa que activar el gps, podes ponerle sonido si quieres para molestar aun mas, enviar un sms,...
Talvez no sea la solucion mas elegante pero me sirve y funciona con cualquier version android y puedo usar este mismo esquema para cualquier otra funcionalidad ("quien no tiene perro caza con gato").
Ahora si no es esa la solucion que te va resultar comoda siempre puedes instalar una version mas vieja de android (sic).
saludos
Charles