android - 即使有权限,USB opendevice 也会失败 - HostAPI 受到限制
问题描述
我正在尝试使用 Android USB Host API 连接 Android 和 Arduino UNO。我使用intent-filter
. 我获得了适当的UsbInterface
and UsbEndpoint
。一切似乎都很好,直到我尝试打开,尽管授予了权限UsbDeviceConnection
,它总是失败。什么原因?
片段如下:
@Override
protected void onResume() {
super.onResume();
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Intent intent = getIntent();
String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
}
}
public boolean connect(UsbDevice device){
[...] // search for appropriate interfaces/endpoints
Log.i(TAG, "usbInEndpoint = " + usbInEndpoint.toString());
Log.i(TAG, "usbOutEndpoint = " + usbOutEndpoint.toString());
Log.i(TAG, "usbInterface = " + usbInterface.toString());
Log.i(TAG, "permission = " + usbManager.hasPermission(device));
usbDeviceConnection = usbManager.openDevice(device);
Log.i(TAG, "usbDeviceConnection = " + usbDeviceConnection));
[...]
}
Logcat 摘录如下:
usbInEndpoint = UsbEndpoint[mAddress=131,mAttributes=2,mMaxPacketSize=64,mInterval=1]
usbOutEndpoint = UsbEndpoint[mAddress=4,mAttributes=2,mMaxPacketSize=64,mInterval=1]
usbInterface = UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=10,mSubclass=0,mProtocol=0,mEndpoints=[
UsbEndpoint[mAddress=4,mAttributes=2,mMaxPacketSize=64,mInterval=1]
UsbEndpoint[mAddress=131,mAttributes=2,mMaxPacketSize=64,mInterval=1]]
permission = true
D/UsbService: openDevice(/dev/bus/usb/001/002) : HostAPI is restricted
usbDeviceConnection = null
编辑
我编辑了问题和 Logcat 提取,因为在我调用 opendevice 后我注意到 UsbService 记录“主机 API 受到限制”,所以我猜这是一种设备安全设置。如何检查?我用的是三星 A8
解决方案
我回答了我自己的问题,希望这对其他有同样问题的人有所帮助。这是因为我的手机是由 MDM 管理的。
推荐阅读
- javascript - 覆盖 Object.entries() 的类型会导致意外错误
- reactjs - 重新导出所有内容均未按预期工作 - 导入另一个文件时出现问题
- mongodb - 如何从 mongodb 中的数组和 groupBy 中过滤值?
- reactjs - 如何更新 useEffect 挂钩中异步函数内的数组?
- c# - 如何在 C# .Net 中验证 keycloak 的 JWT 令牌?
- javascript - 如何在打字稿中转换 JSON 数据数组中的 JSON 数据?
- python - 丢弃特定类 Deeplabv3 的分割
- typescript - 类型“IntrinsicAttributes & DeliveryInfoProps”上不存在属性“href”
- amazon-web-services - 通过命令行将 Visual Studio 项目部署到 AWS Fargate
- c# - 如何在 c# blazor 网页中更新实时日期时间