Título: [Android] Por qué funciona y salta excepcion del error. Publicado por: kondrag_X1 en 27 Julio 2015, 11:58 am Hola,
les comento gente estoy haciendo un controlador BLE (Bluetooth low energy). Estoy montando una arquitectura separando el controlador BLE de la GUI y demás pero tengo un error que aunque el programa funciona me gustaría corregirlo. Os explico: Tengo una clase para manejar los dispositivos BLE: Código
Esta clase se encargará de controlar el BLE sanea, conexión y comunicación con otros dispositivos. Y a su vez se comunicará con el resto de la aplicación con Broadcastreceiver , es decir en el método implementado en la interfaz onLeScan, me avisa cuando se ha encontrado un dispositivo y envia la señal broadcast. Como se puede ver tengo un objeto llamado BeanBluetoothDevice este simplemente es una encapsulación de la información que necesito y serializado. Código
una vez e envia la señal yo la recojo en la activity que me interesa, en mi casa es la principal para mostrar los dispositivos. Código
Como se puede ver en el método onCreate doy de alta la señal que espero recibir. Código
Ahora nos dirigimos en la clase donde creo que está el problema, es la clase donde se recibe la señal Broadcast y se procesa. Código
aquí el problema me aparice cuando quito el constructor vacío, es decir, al que no se le pasan parámetros. Si lo eliminamos en tiempo de ejecución el programa peta y cuando se lo pongo todo corre normalmente, es decir, si me introduce el dispositivo en el arrayList pero a su vez me da una excepción de los objetos mAdapter y mActivity. ¿A qué puede deberse esto? Si al final lo introduce correctamente. PD: soy un patata programando, no ser muy duros conmigo. Título: Re: [Android] Por qué funciona y salta excepcion del error. Publicado por: Usuario Invitado en 27 Julio 2015, 15:40 pm Has dado demasiado info de cómo funciona, pero no de la excepción objeto de este tema. Pega el rastreo de pila para analizarlo. Otra cosa, ¿la clase que hereda de BroadcastReceiver es interna? Si es así, necesitas hacerla estática. Una clase interna es asociada a una instancia de la clase externa.
Título: Re: [Android] Por qué funciona y salta excepcion del error. Publicado por: kondrag_X1 en 27 Julio 2015, 17:25 pm Tienes toda la razón. Me explico mejor o trato de hacerlo.
El error, basicamente, es que me salta la excepción Código
de la clase BLEBroadcastReceiver, la cual es publica y no pertenece al mismo paquete que la activity, la activity está en el paquete GUI. El error parece debido a la clase Parcelable de la serialización pero no lo que entiendo es a que se debe el fallo. Código: 07-27 17:18:26.156 8954-9111/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ ServiceDetectionTag Start scanning 07-27 17:18:41.156 8954-9111/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ ServiceDetectionTag Stop scanning 07-27 17:18:53.537 8954-8954/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ BLEBroadcastReceiver -- OnReceive() -> Added new device EC:4A:C2:B4:E3:B4 --- Name: I'm Flowmeter!! 07-27 17:18:56.156 8954-9111/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ ServiceDetectionTag Start scanning 07-27 17:18:57.287 8954-8971/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ (HandlerBLE) -- onLeScan -> throwing information to the listener. 07-27 17:19:07.781 8954-8954/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ BLEBroadcastReceiver -- OnReceive() -> BroadcastReceiver new device found. 07-27 17:19:09.139 8954-8954/pfc.teleco.upct.es.iot_ble I/IoT-APP﹕ [Error(BLEBroadcastReceiver)]: Message: null Cause:null StackTrace[Ljava.lang.StackTraceElement;@41d76bb0 null y este es el error que obtengo Código: java.lang.SecurityException: need INSTALL_LOCATION_PROVIDER permission, or UID of a currently bound location provider at android.os.Parcel.readException(Parcel.java:1465) at android.os.Parcel.readException(Parcel.java:1419) at android.location.ILocationManager$Stub$Proxy.reportLocation(ILocationManager.java:1122) at com.android.location.provider.LocationProviderBase.reportLocation(LocationProviderBase.java:137) at com.google.android.location.network.NetworkLocationService.onHandleIntent(SourceFile:99) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:61) Título: Re: [Android] Por qué funciona y salta excepcion del error. Publicado por: Usuario Invitado en 27 Julio 2015, 18:03 pm A mí me suena más a un bug con el tipo de dispositivo. Lo que no entiendo, es por qué cuando especificas un constructor vacío no sucede. De alguna manera, ese super() hace algo en el constructor de BroadcasterReceiver o el runtime instancia internamente a las subclases de BroadcasterReceiver y al no encontrar un constructor vacío, lanza excepción. Es raro, trata de reportarlo como bug a ver qué te dicen xD.
Título: Re: [Android] Por qué funciona y salta excepcion del error. Publicado por: kondrag_X1 en 27 Julio 2015, 18:09 pm ok muchísimas gracias. Yo pensaba que estaba haciendo un uso indebido del BroadcasterReceiver.
|