Android13 USB 串口默认授权

一)场景需求

项目中使用到了can协议控制车机功能,can 直接转串口,用USB转串口工具 cn.wch.uartlib 来实现. can 板子通过usb 插入到机器上面,那就是usb 协议了。
遇到问题:

  • 插入can 板的usb 到机器上后,直接弹出授权框框。 需要默认不要弹出。这个逻辑是什么。【应用端解决】
  • 在项目中请求usb 授权,后会有授权框框,其实就是1中的弹框。 如何默认授权,不让弹框。 这个逻辑是什么。【framework层解决】
    如下图所示:
    在这里插入图片描述

二)参考资料

android 10.0 去掉usb授权提示框 默认给予权限

USBService源码分析(一)

USBService源码分析之Usb权限(二)
在线源码查看平台 xref

三)解决方案和源码分析

对于插入USB直接弹出弹框授权申请,如果允许就跳转到对应的app。
解决方案:
去掉应用中 USB_DEVICE_ATTCHED 的过滤器,它会直接跳转到对应的app 。 不符合需求。 故 不在热插拔逻辑的确认框.

           <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
            </intent-filter>
            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />

热插拔确认框:

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java

修改文件

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
 

备注:为什么要改这里,解决问题思路:当弹出确认框的时候,去dump 确认一下当前到底是哪个activity。
在热插拔时候 弹出的是UsbConfirmActivity.java 在应用逻辑去申请请求权限的时候,弹出的是 UsbPermissionActivity.java

解决方案

在UsbPermissionActivity 界面中,默认授权, 然后结束掉自己。

  //wangfangchen add 
        //setupAlert();
		 Log.d(TAG,"22222 mo ren usb  quanbu shouquan... ");
		 mDialogHelper.grantUidAccessPermission();
	     mDialogHelper.setDefaultPackage();
		 mPermissionGranted = true;
         finish();
		//wangfangchen end 

git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值