Android 检测 kitkat (4.4) 的 USB 存储

Android detect usb storage for kitkat (4.4)

我创建了一个 webview 应用程序,它在资产目录中的应用程序中托管了一个网站。 我想通过插入平板电脑 USB 插槽的 USB 棒更新网站。 我首先尝试了 .MEDIA_MOUNTED 广播,它不适用于我的 android 4.4。药片。 我搜索了替代方案并找到了 "MediaScannerConnection"。 这里有几个示例,但对解决我的问题没有多大帮助。

我正在寻找一个简单明了的解决方案,稍微解释一下也很好,以检测是否连接了 USB 存储器以及之后是否有机会执行一些代码。 另外,如何让这个USB-check 运行一直都是一个问题。我想我必须把它放在 OnResume 方法中,但我不太确定。

请 post 为您的 BroadcastReceiver 和 AndroidManifest.xml 编码。

清单应该类似于

<application>
    <!--- ... --->
    <receiver android:name=".UsbBroadcastReceiver"
            android:exported="true"
            android:enabled="true" >
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_MOUNTED" />
            <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
            <data android:scheme="file" />
        </intent-filter>
    </receiver>
</application>

注意 data 标签,它经常被忽略。

在您的 onReceive 实现中,可以从 Intent#getData().

获得挂载根目录的 URI

另请注意,这不适用于 Android 6.0 (M) 及更高版本。对于 6.0 及更高版本,您的代码必须通过以下两种方式之一请求访问 USB:

1) UsbManager#requestPermission

2) Intent#ACTION_OPEN_DOCUMENT_TREE as part of Storage Access Framework