Android lolipop java.lang.SecurityException: neither the user nor the current process have android.permission.BLUETOOTH_PRIVILEGED

I am currently working on an Android application that connects to the device via Bluetooth using Eclipse (Java). I am currently working on Android 4.4 (Kit-Kat) and below, but after a new update, which is Android 5 (Lolipop). Security exception.

manifest:

<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" /> 

the code:

 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); } 

Stack trace:

 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) 

Any tips? Thanks.

+7
java android android-bluetooth bluetooth-lowenergy
source share
3 answers

It seems that Google will change some security on the Bluetooth chip. My bluetooth chip contains some part in an address that has been blocked by this security. That is why I ran into my problem. Since I used a different chip. Now everything is working fine.

P / s: forgot to answer it a long time ago

0
source share

04-27 12: 36: 24.559: W / BluetoothGatt (17764): java.lang.SecurityException: BLUETOOTH_PRIVILEGED permission required: Neither user 10215 nor the current process have android.permission.BLUETOOTH_PRIVILEGED .

Just add the requested permission:

 <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" /> 
+1
source share
  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> 

What is your target SDK version? Does your application support lollipop?

-one
source share

All Articles