Bluetooth Android 6


#1

Hi folks,

estaba recuperando unas apps viejas que tenía rulando con Bluetooth, y al ejecutarlas en Android Marshmallow no funcionaba. En el BroadcastReceiver no detectaba a ningún dispositivo.

Después de un buen rato depurando, como siempre, la respuesta está en StackOverFlow. Hay que añadirle un permiso más al Manifest

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

En la página de Android sobre el Bluetooth no viene nada sobre esto. La verdad que me mosquea un poco ya que este permiso es para saber tu posición (al menos si trabajas con el gps):

public static final String ACCESS_FINE_LOCATION
  Added in API level 1
  Allows an app to access precise location.
  Protection level: dangerous
    Constant Value: "android.permission.ACCESS_FINE_LOCATION"

¿Que os parece / opináis? ¿Puede haber un interés oculto esto por parte de Google?

cc @josejuansanchez @MiguelAngelLV @vsuarez @jorge_arasthel


#2

El resumen es que el BT se puede usar para conseguir una dirección aproximada del usuario usando beacons y por eso Google añade el permiso al del BT, para que el usuario pueda ver que el uso del bluetooth permite esto.

La respuesta la tenías en la misma pregunta.

(Edito porque al poner el enlace a pelo se ha comido la redirección al comentario en cuestión)


#4

Esa es la magia de Android 6.

He visto un par de cosas que de primeras te deja algo loco.

Como por ejemplo el tema del manejo de los nuevos permisos en tiempo de ejecución que muchas veces aunque acepte el usuario el permiso, se le puede ir la pinza un poco.

Supongo que irán mejorándolo.