2013-03-06 88 views
4

我有一个Android应用程序,这将与USB设备交互,在Android developer official documentation for Obtaining permission to communicate with a device它说:的Android USB设备的相关权限和意图过滤

注意:如果您的应用程序使用一个意图过滤器来发现USB设备当他们连接时,如果用户允许您的应用程序处理意图,它会自动获得权限。如果没有,您必须在连接到设备之前在您的应用程序中明确请求许可。

Intent Filter将在AndroidManifest.xml中声明并使用资源文件,该文件将包含vendor-id和product-id。

如果我插入我的设备没有任何反应,即使使用声明的意图。 所以我必须使用相同的官方文档中提到的方法,其中涉及明确要求许可。

这可以工作,我可以与设备进行通信,但恰巧用户必须在每次启动应用程序或设备重新连接时都给予权限。最后,这将向用户发送一条消息,要求在每次设备插入和应用程序启动时进行确认,并且每次都提供相同的许可权是不可取的。

因此,如果“...自动接收许可...”部分不起作用。

如何使意图过滤器工作?
我错过了什么?
我有其他的选择吗?


此问题:Android USB Permissions Dialog never appears有相反的问题,但解决方案不适用于我。
使得应用程序的系统应用程序,绕过权限会为我无论是作为这里所说的不工作:USB open accessory permissions through a service in android


任何帮助是极大的赞赏

回答

0

我不undersand你的问题很好,但我认为解决方案是这样的..

<activity ...> 
<intent-filter > 
      <action android:name="android.intent.action.MAIN" />     
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
      <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> 
      <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter"/> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 
+0

我在我的项目中确切地说,但根据应该足以授予访问USB设备的权限的文档。但它不起作用,因此这个问题。 – Anibaru 2013-03-07 13:47:20

4

我有同样的问题,在你的AndroidManifest.xml中使用该设备写入此活动:

<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" /> 

你也有你的XML资源来创建一个过滤器文件,如RES/XML/device_filter:

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <usb-device vendor-id="26214" product-id="26214" /> 
    </resources> 

在这里厂商ID和产品ID在小数给予 - 以上VID和PID都是0x0123。你看到USB device access pop-up supression?

你不能调用mManager.requestPermission(device,mPermissionIntent),所以你必须直接调用mManager.openDevice(mDevice);并且您可以正常通信而无需显示权限弹出消息。

问候, 塞缪尔Reque samo_reque @ hotmail的。com

+0

我会检查你的答案,但我已经有device_filter xml – Anibaru 2013-05-27 21:12:58

+0

只有第一次运行应用程序请求权限的意图过滤器,但不要求代码调用mManager.requestPermission(device,mPermissionIntent)是一个部分解决。 – 2013-07-23 19:47:48

+0

@SamuelReque:我有我的广播接收器类下的清单权限,而不是一个活动,但每次我重新附加USB时,我仍然会收到这些弹出窗口(检查复选框也是没有用的)。怎么办? – Basher51 2014-07-03 07:04:51