1

特定の USB デバイスと通信する必要がある chromebook 用のアプリを作成しています。デバイスは、コールバックから取得された、検出されたデバイスのリストに存在します。

   var VENDOR_ID = 5824, PRODUCT_ID = 1159;

   document.getElementById("request-permission").addEventListener('click', function() {
    chrome.permissions.request({
            permissions: [{
                'usbDevices': [{
                    'vendorId': VENDOR_ID,
                    "productId": PRODUCT_ID
                }]
            }]
        },
        function(result) {
            if (result) {
                console.log('App was granted the "usbDevices" permission.');
                getDevices();
            }
        }
    });
});


function getDevices() {
    chrome.usb.getDevices({
        vendorId: VENDOR_ID,
        productId: PRODUCT_ID
    }, function(devices) {
        if (chrome.runtime.lastError !== undefined) {
            console.warn('chrome.usb.getDevices error: ' + chrome.runtime.lastError.message);
            return;
        }
        if (devices) {
            if (devices.length > 0) {
                for (var device of devices)
                    openUsbDevice(device);
            }
        }
    }); 
}

したがって、デバイスを正常に表示できますが、開こうとすると失敗します。

chrome.usb.openDevice(device, function(handle) {
        if (chrome.runtime.lastError != undefined) {
          console.log('Failed to open device: '+chrome.runtime.lastError.message);
        } else {
          populateDeviceInfo(handle, function () {
              chrome.usb.closeDevice(handle);
            });
        }
      });

そして、コンソールに次のエラーが表示されます: デバイスを開くことができませんでした: デバイスにアクセスする権限が拒否されました

manifest.js で宣言された必要なすべての USB アクセス許可を持っています。

  "permissions" : [
    "usb"
  ],
  "optional_permissions" : [{
    "usbDevices" : [
        {
          "productId" : 1159,
          "vendorId" : 5824
        }
      ]
  }],

chrome.usb.findDeviceschrome.usb.requestAccessなどの別の API 関数も試しましたが、結果は同じです。同時に、私の nexus 7 デバイスなどは USB 経由で正常に認識されます。それがなぜできるのか、または私のUSBデバイスをアクセス可能にする方法を推測する考えはありますか? 私はこれに直面したのは Acer Chromebook c7 (Chrome OS v.44) だけで、Mac ではそのような問題はありませんでした。

4

1 に答える 1