
当USB设备连接到Android平板电脑时,会出现一个d出窗口,要求获得用户许可.我想压制这个,因为客户端不想要它.我该怎么办呢?
在代码中:
UsbManager.requestpermission(); 被调用以给USB设备临时访问.
这会d出一个d出窗口.默认情况下,如何禁止d出窗口或授予用户访问权限?
解决方法:
当您在应用程序内请求权限时,似乎“默认使用此USB设备”复选框不执行任何 *** 作(我不确定为什么此复选框甚至会显示在此d出窗口中.
相反,您应该在清单中为您的活动注册一个意图处理程序:
<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="@xml/usb_device_filter" /> </activity>您还必须在xml资源中创建一个过滤器文件,例如res / xml / usb_device_filter:
<?xml version="1.0" enCoding="utf-8"?><resources> <usb-device vendor-ID="26214" product-ID="26214" /></resources>这里的vendor-ID和product-ID必须以十进制给出 – 在VID和PID之上都是0x6666.
我上面给出的也适用于USB配件(即配件是USB主机,而androID是设备) – 在这种情况下,意图过滤器应该注册
<action androID:name="androID.harDWare.usb.action.USB_ACCESSORY_ATTACHED" />并且您还必须以完全相同的方式包含元数据过滤器.
请参阅http://developer.android.com/guide/topics/connectivity/usb/accessory.html并搜索“使用意图过滤器”部分.
编辑
总而言之 – 如果您针对您的活动注册了intent-filter,则在连接USB设备/配件时将立即显示USB权限窗口.如果用户选中“默认使用此USB设备”框并授予权限,则会记住这一点,并且不再显示权限对话框(除非卸载应用程序或用户从应用程序管理器清除默认 *** 作) ).
我在这里放了一个小巧,可怕的工作示例项目:
http://www.locusia.com/examples/permissionTest.zip
您需要编辑res / xml / usb_device_filter.xml,否则这应该允许您非常快速地测试它.
对于服务……
似乎服务无法接收USB意图.我通过制作隐藏的活动来解决这个问题,然后重新广播意图.
我在我的清单中定义它如下:
<activity androID:name=".activitIEs.UsbEventReceiverActivity" androID:label="YOUR APPliCATION name - This appears in the permission popup" androID:theme="@style/theme.transparent" androID:noHistory="true" androID:excludeFromrecents="true" androID:taskAffinity="com.example.taskAffinityUsbEventReceiver" androID:process=":UsbEventReceiverActivityProcess" androID:exported="false" > <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/usb_device_filter" /> </activity>(我的服务中有一个复杂的任务/流程布局,该区域的YMMV).
我定义了这样的活动:
public class UsbEventReceiverActivity extends Activity{ public static final String ACTION_USB_DEVICE_ATTACHED = "com.example.ACTION_USB_DEVICE_ATTACHED"; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @OverrIDe protected voID onResume() { super.onResume(); Intent intent = getIntent(); if (intent != null) { if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) { Parcelable usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); // Create a new intent and put the usb device in as an extra Intent broadcastIntent = new Intent(ACTION_USB_DEVICE_ATTACHED); broadcastIntent.putExtra(UsbManager.EXTRA_DEVICE, usbDevice); // broadcast this event so we can receive it sendbroadcast(broadcastIntent); } } // Close the activity finish(); }}最后一块拼图,透明主题(我不确定,但你可以使用内置的androID半透明主题) – res / values / styles.xml:
<?xml version="1.0" enCoding="utf-8"?> <resources> <style name="theme.transparent" parent="androID:theme"> <item name="androID:windowIsTranslucent">true</item> <item name="androID:windowBackground">@androID:color/transparent</item> <item name="androID:windowContentOverlay">@null</item> <item name="androID:windowNoTitle">true</item> <item name="androID:windowIsfloating">true</item> <item name="androID:backgroundDimEnabled">false</item> <item name="androID:windowAnimationStyle">@null</item> </style> </resources> 总结 以上是内存溢出为你收集整理的android – USB设备访问d出抑制?全部内容,希望文章能够帮你解决android – USB设备访问d出抑制?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)