2012-04-24 23 views
9

Sé que esta pregunta ha sido muy solicitada aquí, pero me pregunto desde que ICS salió a la venta, ¿hay alguna forma de habilitar gps programáticamente?ICS Android habilita gps programáticamente

Estoy tratando de habilitar GPS y enviar la ubicación del dispositivo a un correo electrónico, la aplicación se iniciará cuando reciba un mensaje de SMS.

Respuesta

9

¿Hay alguna manera de habilitar gps programáticamente?

Espero que no, ya que eso sería un error de privacidad. AFAIK, todos los agujeros conocidos que permitían que el malware habilitara GPS programáticamente ahora se han cerrado.

estoy tratando de activar el GPS y enviar la ubicación del dispositivo a un correo electrónico

El usuario controla si el GPS está activado o no.

+0

si ese es el caso, ¿hay una forma de ejecutar una función en el fondo tan pronto como el GPS ha sido activado? – HeWhoProtects

+1

Bueno, está el ['GpsStatus.Listener'] (http://developer.android.com/reference/android/location/GpsStatus.Listener.html) y hay tres métodos de estado en el [' LocationListener'] (http://developer.android.com/reference/android/location/LocationListener.html). –

+0

hmm que podría ser una forma de evitarlo ... Lo echaré un vistazo, gracias Oct – HeWhoProtects

4

Como dijo Mark, espero que no porque enderezar la situación en que fuera de la falta de usuario no es ciertamente una cosa muy agradable de hacer ;-)

Puede pedir al usuario que hacerlo, por supuesto (que se probablemente ya encontrado, pero para referencia aquí es una manera trivializado hacerlo desde la memoria)

LocationManager L = (LocationManager) getSystemService(LOCATION_SERVICE); 

if (!L.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    Intent I = new Intent( 
       android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(I); 
} 
+1

jaja sí ... pero no creo que un ladrón siga mis instrucciones para habilitar gps – HeWhoProtects

+0

@HeWhoProtects Ok, así que usa el estuche: teléfono Robado, los usuarios envían SMS, ladrón fue inteligente y apaga el GPS pero no los mensajes de texto. El ladrón siempre puede borrar el teléfono de la aplicación, en cuyo caso no se puede hacer gran cosa. Creo que está en el camino correcto para eludir a un ladrón típico que puede ser un poco inteligente pero no demasiado inteligente, simplemente deje que un servicio acepte el sms, si gps está desactivado usando el método de detección y luego gps ping cuando esté nuevamente encendido. – Idistic

+0

eso es lo que voy a hacer por ahora, voy a aprender cómo hacer notificaciones push y reemplazar sms, no es necesario estar en una situación de robo, perder un teléfono o algo – HeWhoProtects

3

para preguntar al usuario para activar el GPS, echa un vistazo a este link

a continuación serían las entrañas de una función que intenta para obtener la última ubicación GPS conocida ción en orden de precisión descendente. Si el usuario no tiene GPS habilitado, no puede habilitarlo. Lo mejor que puede hacer es tomar la última ubicación conocida o pedirles que activen el GPS. Cada vez que el usuario usa el GPS en otra aplicación y obtiene una nueva coordenada, o se conecta a una red inalámbrica, la última ubicación conocida cambiará. Supongo que podría escribir un servicio en segundo plano que sondee esta información cada 5-10 minutos y se la envíe a usted. Aunque, no estoy de acuerdo con la dirección en la que parece que se dirige con esta aplicación. lol. ¡Para la ciencia!

LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); 
Criteria crit = new Criteria(); 
crit.setAccuracy(Criteria.ACCURACY_FINE); String provider = lm.getBestProvider(crit, true); 
Location loc = lm.getLastKnownLocation(provider); 

if(loc){ 
    return loc; 
} 
lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); 
crit = new Criteria(); 
crit.setAccuracy(Criteria.ACCURACY_COARSE); 
provider = lm.getBestProvider(crit, true); 
loc = lm.getLastKnownLocation(provider); 

if(loc){ 
    return loc; 
} 
lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); 
crit = new Criteria(); 
crit.setAccuracy(Criteria.NO_REQUIREMENT); 
provider = lm.getBestProvider(crit, true); 
loc = lm.getLastKnownLocation(provider); 
return null; 
+0

qué parte de mi "dirección" no has hecho t de acuerdo con lol? Todavía soy un novato en el desarrollo de Android, así que por favor, si hay una forma mejor de hacer las cosas, estoy más que abierto a críticas: D – HeWhoProtects

+0

Bueno, de la pregunta, parecía que podría estar implementando una aplicación de acosador. ¿Estás tratando de usar el GPS o estás tratando de obtener información del GPS discretamente sin que el usuario lo sepa? (por ejemplo: no usar permisos para gps) – JustinDanielson

+0

nadie mi aplicación no es para malas intenciones, estoy creando un servicio de seguimiento, donde si el usuario pierde su teléfono, pueden iniciar sesión en mi sitio web y enviar una notificación automática a su propio teléfono para enviar una señal gps, reproducir un sonido de alarma (si el teléfono estaba en silencio), etc. – HeWhoProtects

0

Usted tiene que pedir permiso al usuario:

Intent gpsOptionsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(gpsOptionsIntent); 
Cuestiones relacionadas