2014-01-27 7 views
5

Seit ich auf Android 4.2 aktualisiert habe ich Probleme habe, wenn ich versuche, ein Gerät zu koppeln Das Gerät sollte gepaart werden, aber jetzt heißt es, dass acros_user_permission erforderlich ist. HierAndroid Bluetooth Pairing Sicherheit

ist das Fehlerprotokoll:

Fehler: Code 3: java.lang.SecurityException :: Permission Denial: Broadcast von android fragt als Benutzer ausgeführt -1 aber von user0 Aufruf; Dies erfordert android.permission.INTERACT_ACROSS_USERS_FULL oder android.permission.INTERACT_ACROSS_USERS. meine Methode

und hier:

public boolean ensurePaired(BluetoothDevice bd) { 
    BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(bd.getAddress()); 
    boolean paired = false; 

    Log.d(TAG,"Pairing with Bluetooth device with name " + device.getName()+" and address "+device.getAddress()); 

    try { 
     Method m = device.getClass().getMethod("createBond"); 
     paired = (Boolean) m.invoke(device);      
    } catch (Exception e) 
    { 
     return paired; 
    } 
    Log.d("BluetoothPlugin -", "Returning "+ "Result: "+paired); 
    return paired; 
} 

Antwort

1

Ich würde den Code ändern:

public boolean ensurePaired(BluetoothDevice bd) { 
    BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(bd.getAddress()); 

    Log.d(TAG,"Pairing with Bluetooth device with name " + device.getName()+" and address "+device.getAddress()); 

    if(device.getBondState() != BluetoothDevice.BOND_BONDED){ 
    device.createBond(); 
    } 
} 

createBond ist ein asynchroner Aufruf, wird es sofort zurück. Registrieren Sie sich für ACTION_BOND_STATE_CHANGED Intents, die benachrichtigt werden sollen, wenn der Verbindungsprozess abgeschlossen ist, und sein Ergebnis.