A permissão USB obtida via android.hardware.usb não se aplica ao NDK

Consegui obter uma permissão para me comunicar com um dispositivo por meio da USB Host API do Android.

private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";

protected void execute(Context ctxt) {
    UsbManager manager = (UsbManager) viewer.getSystemService(Context.USB_SERVICE);
    HashMap<String, UsbDevice> deviceList = manager.getDeviceList();

    UsbDevice d = null;
    for (String s : deviceList.keySet()) {
        d = deviceList.get(s);
    }

    PendingIntent mPermissionIntent = PendingIntent.getBroadcast(ctxt, 0, new Intent(ACTION_USB_PERMISSION), 0);
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    viewer.registerReceiver(mUsbReceiver, filter);

    manager.requestPermission(d, mPermissionIntent);
}

private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (ACTION_USB_PERMISSION.equals(action)) {
            synchronized (this) {
                UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

                if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                    if(device != null){
                      Log.d(TAG, "Permission granted!");
                   }
                } 
                else {
                    Log.d(TAG, "permission denied for device " + device);
                }
            }
        }
    }
};

Infelizmente isso não dá ao meu código NDK permissão para se comunicar diretamente com este dispositivo (que é necessário para o libusb). Existe alguma maneira de "transferir" as permissões de Java para NDK sem raiz?

P.S. Acabei usando sockets UNIX para transferir o File Descirptor original do Java para um executável nativo do Android (tenho o projeto GNU-ed emhttps://github.com/martinmarinov/rtl_tcp_andro- ). Para algumas pessoas, seria ainda mais fácil, pois eles podem estar usando o NDK para se conectar diretamente ao dispositivo (não um aplicativo de terceiros) e, portanto, o ponteiro usado em Java ainda pode ser acessado pelo NDK sem precisar mexer no UNIX tomadas.

questionAnswers(1)

yourAnswerToTheQuestion