2014-01-27 95 views
5

由于我升级到android 4.2,我遇到了麻烦,当我尝试配对设备 设备应该配对,但现在它说acros_user_permission是必需的。Android蓝牙配对安全

以下是错误日志:

错误:代码3: java.lang.SecurityException异常:: 权限拒绝:从Android的广播要求为用户运行-1,但 从用户0调用;这需要 android.permission.INTERACT_ACROSS_USERS_FULL或 android.permission.INTERACT_ACROSS_USERS。

,在这里我的方法:

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

回答

1

我的代码更改为:

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是一个异步调用,它会立即返回。在绑定过程完成时注册ACTION_BOND_STATE_CHANGED意图以及其结果。