Spanish [SOLUCIONADO] Problemas con deteccion de BT en Android 6.0

cas6678

Active Member
Licensed User
Longtime User
Tengo un problema con la deteccion del bluetooth.

He hecho una aplicacion que funciona (hasta ahora) sin problemas. Una de las funcionalidades usa la conexion bluetooth por lo que necesito que desde la aplicacion se busquen los dispositivos que tengan BT.

Desde que he conseguido que la aplicacion sea estable no he tenido problemas con este tema. Por ejemplo en un Samsung S3 con Android 4.3 o en una tablet Samsung Tab 4 que lleva Android 5.1.1

Hace unos dias un amigo me dio su telefono para que le instalara la aplicacion y me surgio el problema. Desde la aplicacion no se "ven" los BT, pero desde el propio telefono (fuera de mi APP) si. Pense que era algo del telefono y lo deje pasar, era un Motorola Moto G que yo jamas habia visto.

Ahora resulta que me compre un nuevo telefono Galaxy J5(2016) que lleva Android 6.0.1 y me ocurre lo mismo que con el de mi amigo, los BT no se "ven" desde la aplicacion.

He hecho pruebas con el telefono de mi mujer que es un Galaxy J5 a secas con Android 5.1.1 y trabaja sin problemas.

De todo este rollo pienso que quizas haya pasado algo con la nueva version de Android pero no se que, alguien sabe algo que me pueda orientar???

Muchas gracias.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Tengo un problema con la deteccion del bluetooth.

He hecho una aplicacion que funciona (hasta ahora) sin problemas. Una de las funcionalidades usa la conexion bluetooth por lo que necesito que desde la aplicacion se busquen los dispositivos que tengan BT.

Desde que he conseguido que la aplicacion sea estable no he tenido problemas con este tema. Por ejemplo en un Samsung S3 con Android 4.3 o en una tablet Samsung Tab 4 que lleva Android 5.1.1

Hace unos dias un amigo me dio su telefono para que le instalara la aplicacion y me surgio el problema. Desde la aplicacion no se "ven" los BT, pero desde el propio telefono (fuera de mi APP) si. Pense que era algo del telefono y lo deje pasar, era un Motorola Moto G que yo jamas habia visto.

Ahora resulta que me compre un nuevo telefono Galaxy J5(2016) que lleva Android 6.0.1 y me ocurre lo mismo que con el de mi amigo, los BT no se "ven" desde la aplicacion.

He hecho pruebas con el telefono de mi mujer que es un Galaxy J5 a secas con Android 5.1.1 y trabaja sin problemas.

De todo este rollo pienso que quizas haya pasado algo con la nueva version de Android pero no se que, alguien sabe algo que me pueda orientar???

Muchas gracias.

Mira un poco sobre los Runtime Permissions que desde android 6 hacia arriba ya funcionan de otra manera.

https://www.b4x.com/android/forum/threads/runtime-permissions-android-6-0-permissions.67689/#content
 

dar2o3

Active Member
Licensed User
Longtime User
Posiblemente en el manifest tengas puesto android:targetSdkVersion="23" o superior, si es así, ahí tienes el problema, los permisos se gestionan de forma distinta a partir de la api 23 (incluida.)

Si quieres evitarte problemas baja a una versión anterior y te funcionará como siempre en todos los dispositivos móviles (incluidos los que tengan android 6.)

Te dejo el siguiente link por si te animas: https://www.b4x.com/android/forum/threads/runtime-permissions-android-6-0-permissions.67689/
 
Last edited:

cas6678

Active Member
Licensed User
Longtime User
Posiblemente en el manifest tengas puesto android:targetSdkVersion="23" o superior, si es así, ahí tienes el problema, los permisos se gestionan de forma distinta a partir de la api 23 (incluida.)

Si quieres evitarte problemas baja a una versión anterior y te funcionará como siempre en todos los dispositivos móviles (incluidos los que tengan android 6.)

Te dejo el siguiente link por si te animas: https://www.b4x.com/android/forum/threads/runtime-permissions-android-6-0-permissions.67689/
No debe ser eso. De hecho entre en el manifest (que hace varias actualizaciones de la aplicacion que no entraba) y tenia android:targetSdkVersion="14" . Estoy tratando de descifrar el enlace que me habeis puesto ambos pero voy muy perdido...

Por lo que entiendo hasta ahora el modo de administrar los permisos ha cambiado a partir de Android 6 pero deberia no afectar si hemos declarado un api 22 o inferior? si es asi no entiendo el problema que estoy teniendo.

Otra: Estoy trabajando con la version 5.20 de B4A, esto puede afectar a algo?
 

cas6678

Active Member
Licensed User
Longtime User
B4X:
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="b4a.CasPhone2"
    android:versionCode="1"
    android:versionName="V1"
    android:installLocation="internalOnly">
  
    <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="22"/>
    <supports-screens android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:anyDensity="true"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:icon="@drawable/icon"
        android:label="CAS PHONE"
        android:theme="@android:style/Theme.Holo">
        <activity
            android:windowSoftInputMode="stateHidden"
            android:launchMode="singleTop"
            android:name=".main"
            android:label="CAS PHONE"
            android:screenOrientation="landscape">
            <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
          
        </activity>
        <service android:name=".starter">
        </service>
        <receiver android:name=".starter$starter_BR">
        </receiver>
        <service android:name=".estadobateria">
        </service>
        <receiver android:name=".estadobateria$estadobateria_BR">
        </receiver>
    </application>
</manifest>

Este es el Archivo AndroidManifest que tengo generado. Antes del comentario de dar2o3 tenia android:targetSdkVersion="14".
 

cas6678

Active Member
Licensed User
Longtime User
Sigo con el tema por si pudiera dar alguna pista a quien me pueda ayudar...(esperando ansioso;))

La aplicacion que funciona correctamente en Android 4.3 tiene los siguientes permisos:
.) Leer ID y estado telefono
.) Modificar/eliminar contenidos del almacenamiento USB
.) Ajustes Bluetooth crear conexiones Bluetooth
.) Impedir que el telefono entre en modo inactivo
.) Probar acceso al almacenamiento protegido

La misma aplicacion no funciona correctamente en Android 6.0 y en la gestion de permisos de la aplicacion dice:

.) Almacen
.) Telefono

Entiendo que estos son los que tiene aprobados de los considerados dangerous

Luego si voy a "todos los permisos" me sale lo siguiente:

.) ALMACEN
.) Modificar o eliminar contenidos del almacenamiento SD
.) Leer contenido tarjeta SD
.) TELEFONO
.) Consultar la identidad y el estado del telefono
.) OTRAS FUNCIONES DE LA APLICACION
.) Vincular con dispositivos bluetooth
.) Acceder a los ajustes de Bluetooth
.) Impedir que el telefono entre en modo de suspension


En definitiva que parece que los permisos del bluetooth los tiene no?
 

dar2o3

Active Member
Licensed User
Longtime User
No me ha echo falta trabajar nunca con el buetooth así que yo no puedo hablarte por experiencia, pero yo intentaría hacer una prueba con la version 23 del sdk de android y darle los permisos necesarios.
 

cas6678

Active Member
Licensed User
Longtime User
Lo intentare pero por lo que he visto en otro post de rscheel se necesita un libreria "RuntimePermission" que en mi b4A 5.20 no esta. Voy actualizarme un poco. Supongo que si lo logro servira para Android 6.0 e inferiores no? o solo para el 6.0?
 

rscheel

Well-Known Member
Licensed User
Longtime User
Lo intentare pero por lo que he visto en otro post de rscheel se necesita un libreria "RuntimePermission" que en mi b4A 5.20 no esta. Voy actualizarme un poco. Supongo que si lo logro servira para Android 6.0 e inferiores no? o solo para el 6.0?

Para usar esa librería y esos permisos tienes que usar b4a 6.0
 

cas6678

Active Member
Licensed User
Longtime User
Bueno, voy a poner solucionado pero no se yo.....

A mi juicio no era un tema de permisos porque la aplicacion que estaba instalada en el Android 6.0 decia tener los permisos necesarios. Pero siguiendo el camino que me enseño rscheel instale la version 6.0 de B4A. Al instalarla lo primero que quise hacer es cargar la libreria RuntimePermission y B4A me dijo que...

An error ocurred
Maven artifact not found
com.android.support/support-v4

...leyendo un poco me parecio entender que era un tema de actualizacion del SDK, lo hice y el error desaparecio. Pero como me gusta hacer las cosas de a una en vez de intentar cargar la libreria RuntimePermission en mi aplicacion antes que nada volvi a probar mi aplicacion tal cual la tenia antes y ahora ya funciona en todas las versiones de Android...(bueno al menos en las que yo tengoo_O)

Asi que por las dudas no tocare nada mas hasta que controle algo mas que me ha pasado. En resumen el unico cambio que he hecho es la actualizacion del B4A y el SDK, la aplicacion esta tal cual. Siguiendo el consejo de dar2o3 deje el targetSdkVersion en 22.

Saludos y gracias por las pistas, no fueron la solucion pero si el camino que me permitio llegar.
 
Top