访问连接的MTP设备而不接收USB_DEVICE_ATTACHED意图?

时间:2011-10-06 16:35:14

标签: android android-activity android-intent usb android-3.0-honeycomb

我正在开发一些应用程序,它使用媒体传输协议从连接到我的Android平板电脑USB主机(Android 3.1,Acer Iconia Tab A500)的相机中读取照片。

我找到了一些描述如何使用USB的教程,我从USB摄像头复制到SD卡已经正常工作。

我只有一个问题:所有教程都等待USB_DEVICE_ATTACHED-Intent,然后打开一个UsbDeviceConnection,用于与Intents Bundle中发送的设备进行通信。

所以我希望能够手动启动访问USB的活动 - 没有收到这个意图。 现在的问题是,我不能像这样打开USB连接

UsbDeviceConnection usbDeviceConnection = usbManager.openDevice(usbDevice);

它只返回null。 如果我重新插入设备并选择我的Activity作为Intent接收器,它可以正常工作。 我认为这必须是因为IntentReceiver在USB设备上拥有一些独占权限。

My Manifest看起来像这样:

    <activity
        android:name=".ImageActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <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" />
    </activity>

一个例子:如果用户将Galery设置为USB设备的默认值,该怎么办?在这种情况下如何访问USB设备?

1 个答案:

答案 0 :(得分:2)

我发现USB主机模式API指南文档在这方面非常有用。

http://developer.android.com/guide/topics/connectivity/usb/host.html#discovering-d

最重要的一点是,如果您没有收到某项活动的UsbDevice,那么您需要获得与之通信的权限。此过程在提供的链接中进行了描述。