获得Broadcastreceiver获得USB设备许可的问题?

发布于 2025-01-25 18:20:31 字数 1268 浏览 4 评论 0原文

我正在使用以下代码在检测到的用户中获得USB访问权限,但是在Android 11中永远不会检测到它。任何帮助都将不胜感激。

public final String ACTION_USB_PERMISSION = "com.domain.ftd.USB_PERMISSION";

private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
        @Override
        public void onReceive(Context context, Intent intent) {


            if (intent.getAction().equals(ACTION_USB_PERMISSION)) {
                boolean granted = intent.getExtras().getBoolean(UsbManager.EXTRA_PERMISSION_GRANTED);
                Log.e("usb started","really");
                if (granted) {
                     //DO SOMETHING 
                }
         }

     @Override
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             usbManager = (UsbManager) getSystemService(this.USB_SERVICE);
            IntentFilter filter = new IntentFilter();
            filter.addAction(ACTION_USB_PERMISSION);
            filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
            filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
            registerReceiver(broadcastReceiver, filter);
    
    
    
    
        }
                        

     
    

I am using below code to get usb access permission from user when its detected, but it never get detected in android 11. Any help would be highly appreciated

public final String ACTION_USB_PERMISSION = "com.domain.ftd.USB_PERMISSION";

private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
        @Override
        public void onReceive(Context context, Intent intent) {


            if (intent.getAction().equals(ACTION_USB_PERMISSION)) {
                boolean granted = intent.getExtras().getBoolean(UsbManager.EXTRA_PERMISSION_GRANTED);
                Log.e("usb started","really");
                if (granted) {
                     //DO SOMETHING 
                }
         }

     @Override
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             usbManager = (UsbManager) getSystemService(this.USB_SERVICE);
            IntentFilter filter = new IntentFilter();
            filter.addAction(ACTION_USB_PERMISSION);
            filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
            filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
            registerReceiver(broadcastReceiver, filter);
    
    
    
    
        }
                        

     
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遮了一弯 2025-02-01 18:20:31

您需要注册广播接收器并调用requestPermission()方法以显示一个对话框,该对话框要求用户许可连接到设备,
请参阅官方doc 和搜索关键字“ requestperpermission”(requestperpermission)( )

permissionIntent = PendingIntent.getBroadcast(this, 0, Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_MUTABLE)
lateinit var device: UsbDevice
        ...
usbManager.requestPermission(device, permissionIntent)

You need to register the broadcast receiver and call the requestPermission() method to display a dialog that asks users for permission to connect to the device,
please refer the official doc and search for keyword "requestPermission()"

permissionIntent = PendingIntent.getBroadcast(this, 0, Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_MUTABLE)
lateinit var device: UsbDevice
        ...
usbManager.requestPermission(device, permissionIntent)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文