2015-04-27 7 views
7

Ich arbeite derzeit an einer Android-Anwendung, die über Bluetooth mit Eclipse (Java) zu einem Gerät verbindet. Momentan arbeite ich an Android 4.4 (Kit-Kat) und weiter unten, aber nach dem neuen Update ist das Android 5 (Lolipop). Sicherheitsausnahme tritt auf.android lolipop java.lang.SecurityException: Weder Benutzer noch aktueller Prozess hat android.permission.BLUETOOTH_PRIVILEGED

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

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) 

Jede Beratung? Vielen Dank.

+0

versuchen zu beantworten sowmia

+0

Das Problem existiert noch –

Antwort

0

Scheint wie Google einige Sicherheit auf dem Bluetooth-Chip ändern. Mein Bluetooth-Chip enthält einen Teil der Adresse, die von dieser Sicherheit blockiert wurde. Deshalb bin ich auf mein Problem gestoßen. Da habe ich einen anderen Chip benutzt. Alles funktioniert jetzt gut.

P/s: vergessen haben, vor dieser langen Zeit

1

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 .

Fügen Sie einfach die Erlaubnis, es fragt nach:

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

Vielen Dank für die Antwort, aber es funktioniert nicht –

+0

Das führt zu einem Fehler: ** PackageManager: Keine Berechtigung android.permission.BLUETOOTH_PRIVILEGED zum Paket com.myapp.me (protectionLevel = 18 Flags = 0x3848be46) ** –

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

Was ist Ihr Ziel SDK-Version? Unterstützt deine App Lollipop?

+0

Ja, es unterstützt lolipop,

+0

Das Problem besteht immer noch –

Verwandte Themen