Buenastardes y muchas gracias de antemano! Estoy intentando implementar una aplicación sencilla que se resumiría en una pantalla con un botón que lanza otra activity la cual "debería" devolverme la posición por Gps en dos campos de texto.
Mi problema es que al lanzar el emulador para probarlo y presionar el botón de la primera actividad la aplicación se detiene y sale. No soy capaz de ver las excepciones utilizando log junto con try y catch. Adjunto parte de mi código por si alguien me puede echar una mano, estoy un poco desesperado ya que la información que me proporciona el emulador no me sirve de mucha ayuda, aunque igual es porque soy un novato en esto de android.
Este es el código en mi primera Activity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_posicion);
final Button btnSearch = (Button)findViewById(R.id.BtnSearch);
btnSearch.setOnClickListener(new OnClickListener() {
public void onClick(View v){
try {
Intent intent = new Intent (Posicion.this, gps.class);
//Iniciamos la Actividad
startActivity(intent);
}
catch (Exception e) {
Log.d("PROBLEMA", "El error es: "+e.toString());
}
}
});
}
Este el el código de la segunda actividad:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps);
try {
gpscoordenadas();
}
catch (Exception e) {
Log.d("PROBLEMA", "El error es: "+e.toString());
}
}
public void gpscoordenadas()throws IOException{
//positionGps = (TextView)findViewById(R.id.LblPosicionGps);
//lblEstado = (TextView)findViewById(R.id.LblEstado);
lblLatitude = (TextView)findViewById(R.id.LblPosLatitud);
lblLongitude = (TextView)findViewById(R.id.LblPosLongitud);
Location location = null;
LocationManager locManager = (LocationManager)getSystemService(LOCATION_SERVICE );
try {
location = locManager.getLastKnownLocation(LocationManager.GP S_PROVIDER);
}
catch (Exception e) {
Log.d("PROBLEMA", "El error es: "+e.toString());
}
mostrarPosition(location);
//Si el GPS no está habilitado
if (!locManager.isProviderEnabled(LocationManager.GPS _PROVIDER)) {
mostrarAvisoGpsDeshabilitado();
}
LocationListener locListener = new LocationListener() {
public void onLocationChanged(Location location) {
mostrarPosition(location);
}
public void onProviderDisabled(String provider){
//PosicionGps.setText("Provider OFF");
}
public void onProviderEnabled(String provider){
//lblEstado.setText("Provider ON");
}
public void onStatusChanged(String provider, int status, Bundle extras){
//lblEstado.setText("Provider Status: " + status);
Log.i ("", "Status:" + status);
}
};
locManager.requestLocationUpdates(LocationManager. GPS_PROVIDER,0,0,locListener);
}
El caso es que no me imprime ninguno de los log y los errores que me devuelve el emulador son los siguientes:
ERROR/AndroidRuntime(736): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.swteleco.searchstop/net.swteleco.searchstop.gps}: java.lang.SecurityException: Provider gps requires ACCESS_FINE_LOCATION permission
ERROR/AndroidRuntime(736): Caused by: java.lang.SecurityException: Provider gps requires ACCESS_FINE_LOCATION permission
A ver si alguien puede ayudarme.
Muchas gracias!