Android lolipop java.lang.SecurityException: Ni el usuario ni el proceso actual tiene android.permission.BLUETOOTH_PRIVILEGED

Actualmente estoy trabajando en una aplicación de Android que se conecta a un dispositivo a través de Bluetooth usando Eclipse (Java). Actualmente lo tengo trabajando en Android 4.4 (Kit-Kat) y abajo, pero después de la nueva actualización que es Android 5 (Lolipop). Se produce una excepción de seguridad.

Manifiesto:

<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" /> <uses-feature android:name="android.hardware.bluetooth_le" android:required="false" /> 

Código:

 mBleScanner.startScan(filters, scanSettings, mLeScanCallback); private ScanCallback mLeScanCallback = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { BluetoothDevice device = result.getDevice(); if(device.getName() != null) { if(device.getName().toUpperCase().contains("MyDevice")) { mBleScanner.stopScan(mLeScanCallback); if (device.getBondState() == BluetoothDevice.BOND_BONDED) { Connect(device.getAddress().toString()); } else { // pair device device.setPairingConfirmation(true); device.createBond(); } } } } }; ... .. . private void BondDevice(BluetoothGattCharacteristic bgc, boolean pnEnable) { boolean bool = gatt.setCharacteristicNotification(bgc, true); // this line throw security exception BluetoothGattDescriptor bgd=bgc.getDescriptor(UUID.fromString(BLE_DESCRIPTOR_NOTIFY)); byte[] arrayOfByte = pnEnable ? BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE: BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE; gattDescriptor.setValue(arrayOfByte); mBluetoothGatt.writeDescriptor(bgd); } 

Rastro de la pila:

 04-27 12:36:24.559: W/BluetoothGatt(17764): Unhandled exception in callback 04-27 12:36:24.559: W/BluetoothGatt(17764): java.lang.SecurityException: Need BLUETOOTH_PRIVILEGED permission: Neither user 10215 nor current process has android.permission.BLUETOOTH_PRIVILEGED. 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.os.Parcel.readException(Parcel.java:1540) 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.os.Parcel.readException(Parcel.java:1493) 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.bluetooth.IBluetoothGatt$Stub$Proxy.registerForNotification(IBluetoothGatt.java:1163) 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.bluetooth.BluetoothGatt.setCharacteristicNotification(BluetoothGatt.java:1239) 04-27 12:36:24.559: W/BluetoothGatt(17764): at com.vibease.ap3.service.ServiceBLE.BondDevice(ServiceBLE.java:568) 04-27 12:36:24.559: W/BluetoothGatt(17764): at com.vibease.ap3.service.ServiceBLE.CheckDevice(ServiceBLE.java:518) 04-27 12:36:24.559: W/BluetoothGatt(17764): at com.vibease.ap3.service.ServiceBLE.access$7(ServiceBLE.java:493) 04-27 12:36:24.559: W/BluetoothGatt(17764): at com.vibease.ap3.service.ServiceBLE$2.onServicesDiscovered(ServiceBLE.java:373) 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.bluetooth.BluetoothGatt$1.onSearchComplete(BluetoothGatt.java:309) 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.bluetooth.IBluetoothGattCallback$Stub.onTransact(IBluetoothGattCallback.java:217) 04-27 12:36:24.559: W/BluetoothGatt(17764): at android.os.Binder.execTransact(Binder.java:446) 

¿Algún consejo? Gracias.

04-27 12: 36: 24.559: W / BluetoothGatt (17764): java.lang.SecurityException: Necesita permiso BLUETOOTH_PRIVILEGED : Ni el usuario 10215 ni el proceso actual tiene android.permission.BLUETOOTH_PRIVILEGED .

Sólo tiene que agregar el permiso que está pidiendo:

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

Parece que Google cambia algo de seguridad en el chip Bluetooth. Mi chip Bluetooth contiene parte de la dirección bloqueada por esta seguridad. Por eso encontré mi problema. Ya que usé un chip diferente. Todo funciona bien ahora.

P / s: se olvidó de contestar esto hace mucho tiempo

  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> 

¿Cuál es su versión de SDK de destino? ¿Su app soporta lollipop?

  • Android - Spinner + setOnClickListener
  • Múltiples elementos seleccionados RecyclerView in Activity.java
  • Obtener la suma de comprobación de los códigos fuente en la biblioteca de Android
  • Cómo descargar el paquete com.sun.net.httpserver?
  • Android - Dibujo de una imagen de los activos, algo raro está sucediendo
  • Convertir JSONArray a Array de cadenas
  • ¿Cómo puedo reutilizar una clase interna en Java / Android?
  • Android: enorme diferencia en el consumo de memoria cuando se utiliza drawable vs drawable-nodpi carpetas
  • Plugin de Android Emulator no funciona en Jenkins
  • Ocultación de la barra de título / barra de notificación cuando el dispositivo está orientado al paisaje
  • Dibujo 2D eficiente en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.