ACCESS_FINE_LOCATION Permisos de AndroidManifest no concedidos

Estoy intentando utilizar el GPS en androide (2.2 y 2.3) pero estoy consiguiendo el error siguiente cuando intento utilizar el objeto LocationManager:

WARN/System.err(522): java.lang.SecurityException: Provider network requires ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION permission

He investigado el tema en otros mensajes y suelen ser debido a problemas con AndroidManifest.xml. Sin embargo, la mía parece estar bien:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.thedigitalsean.examples" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".GetLocation" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"></uses-permission> <uses-permission android:name="android.permisssion.INTERNET"></uses-permission> </manifest> 

Esta es la línea ofensiva de código en mi método onCreate en la actividad GetLocation, encerrada en un bloque try / catch:

  LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); final LocationListener locListener = new MyLocListener(); try{ locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener); } catch (SecurityException se){ ((TextView)findViewById(R.id.infobox)).setText(se.toString()); se.printStackTrace(); } 

Esta es la primera aplicación que he escrito donde necesito pedir permisos de android y hasta ahora no he tenido éxito en la concesión de permisos en absoluto. ¿Hay algo que me falta en mi manifiesto o quizás en mi configuración de eclipse?

Has mal escrito el permiso

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Yo estaba teniendo el mismo problema y no podía averiguar lo que estaba haciendo mal. Resulta que el auto-completar para Android Studio estaba cambiando el texto a todas las mayúsculas o minúsculas (dependiendo de si escribí en mayúsculas o palabras inferiores antes de completar el auto). El sistema operativo no estaba registrando el nombre debido a este problema y obtendría el error con respecto a un permiso que faltaba. Como se indicó anteriormente, asegúrese de que sus permisos estén etiquetados correctamente:

Correcto :

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Incorrecto :

 <uses-permission android:name="ANDROID.PERMISSION.ACCESS_FINE_LOCATION" /> 

Incorrecto :

 <uses-permission android:name="android.permission.access_fine_location" /> 

Aunque esto puede parecer trivial, es fácil pasar por alto.

Si hay algún ajuste para que los permisos no sean sensibles a mayúsculas y minúsculas, agregue un comentario con las instrucciones. ¡Gracias!

Compatible con todas las versiones de SDK ( android.permission.ACCESS_FINE_LOCATION convirtió en dangerous permiso dangerous en Android M y requiere que el usuario lo otorgue manualmente).

En las versiones de Android debajo de Android M ContextCompat.checkSelfPermission(...) siempre devuelve true si agregas estos permisos en AndroidManifest.xml )

 public void onSomeButtonClick() { ... if (!permissionsGranted()) { ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, 123); } else doLocationAccessRelatedJob(); ... } private Boolean permissionsGranted() { return ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED); } @Override public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 123) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission granted. doLocationAccessRelatedJob(); } else { // User refused to grant permission. You can add AlertDialog here Toast.makeText(this, "You didn't give permission to access device location", Toast.LENGTH_LONG).show(); startInstalledAppDetailsActivity(); } } } private void startInstalledAppDetailsActivity() { Intent i = new Intent(); i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:" + getPackageName())); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } 

en AndroidManifest.xml:

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
  • IllegalArgumentException: el proveedor no exisit: null en Maps V1
  • La aplicación de Android no puede acceder a la ubicación en el emulador mediante FusedLocationApi
  • Mantenga el servicio de ubicación activo cuando la aplicación esté cerrada.
  • Obtener el nombre de la ciudad de la latitud y la longitud en androide da servicio no disponible Android 4.0.3?
  • Sensor de ubicación Android de Delphi no funciona si se permite la ubicación después del inicio de la aplicación
  • ¿Es posible simular ubicaciones con el nuevo proveedor de ubicación fusionado de Google?
  • Cómo obtener la ubicación actual de mi dispositivo
  • Recibir una notificación (vía BroadcastReceiver) cuando se inicia / detiene el GPS (o servicios de ubicación)
  • Android O - Old empezar el servicio de primer plano sigue funcionando?
  • La API de ubicación de Google Play Service devuelve una ubicación incorrecta a veces
  • ACCESS_COARSE_LOCATION es necesario si el usuario ya ha concedido ACCESS_FINE_LOCATION?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.