gpt4 book ai didi

android - 通过 android.hardware.usb 获取的 USB 权限不适用于 NDK

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:36 25 4
gpt4 key购买 nike

我能够获得通过 Android 的 USB 主机 API 与设备通信的权限。

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

不幸的是,我的 NDK 代码没有直接与该设备通信的权限(这是 libusb 所必需的)。有什么方法可以在没有 root 的情况下将权限从 Java“转移”到 NDK?

附言我最终使用 UNIX 套接字将原始文件描述符从 Java 传输到 Android native 可执行文件(我在 https://github.com/martinmarinov/rtl_tcp_andro- 处对项目进行了 GNU 编辑)。对于某些人来说,这会更容易,因为他们可能正在使用 NDK 直接连接设备(而不是第三方应用程序),因此他们在 Java 中使用的指针可能仍可由 NDK 访问,而不必与 UNIX 混为一谈 socket 。

最佳答案

没有可能的权限“转移”,因为 Android 安全模型要求每个应用程序静态声明其所需的权限,并且用户在安装时批准权限集。不支持动态权限。每个应用都映射到一个 UID,其在 list 中静态声明的权限。 Java 没有权限边界,Dalvik VM 不存在通过 NDK 运行 native 代码的障碍。所有权限都必须在 list 中列出,apk 可能根本不包含 Java (dex) 代码。

http://developer.android.com/guide/topics/security/permissions.html

http://osdir.com/ml/android-ndk/2012-09/msg00094.html

关于android - 通过 android.hardware.usb 获取的 USB 权限不适用于 NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com