Xamarin/Android抑制USB智能卡读卡器权限弹窗及Manifest配置问题
USB智能卡读卡器权限问题(Xamarin/Android)
背景
- 需求:开发可集成到其他Xamarin/Android应用的独立库,支持外接USB智能卡读卡器,不提供完整源码
- 项目结构:
- TestXamLibs解决方案:包含TestXamLibs、TestXamLibs.Android默认项目
- 独立资源库项目:XamCACReader
- 当前实现:应用仅含启动界面和BroadcastReceiver,用于监听USB设备的连接/断开事件,但设备每次连接都需重复确认权限
已尝试的配置及问题
AndroidManifest.xml配置
尝试添加USB设备过滤配置以避免重复授权,但配置后应用无法运行,移除则恢复正常。配置内容如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.testxamlibs"> <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30" /> <application android:label="TestXamLibs.Android" android:theme="@style/MainTheme"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application> <activity> <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="@drawable/MyUsbDevice" /> </activity> </application> </manifest>
USB设备过滤文件
在Resources\Drawable目录下添加了MyUsbDevice.xml(注:开发使用Visual Studio,项目中为Resources文件夹,而非其他资料提及的res文件夹,不确定是否影响):
<?xml version="1.0" encoding="utf-8"?> <resources> <usb-device vendor-id="2278" product-id="13367" /> </resources>
遇到的错误
- Manifest语法错误:
Severity Code Description Project File Line Suppression State Error Missing 'name' key attribute on element activity at AndroidManifest.xml:34:5-39:16 TestXamLibs.Android
- 调试权限错误:某次尝试时出现提示,导致无法调试:
android:debuggable must be set to true
待解决问题
- 如何正确配置AndroidManifest.xml以实现USB设备免重复授权?
- 除了Manifest配置,是否有代码层面的方法可以实现免重复授权?
内容的提问来源于stack exchange,提问作者DRapp
相关产品推荐
相关产品推荐

