Android检测kitkat的USB存储(4.4)

我创build了一个webview应用程序,该应用程序在资产目录中的应用程序中托pipe一个网站。 我想通过插在我的平板usbslot的USBstick更新网站。 我首先尝试了.MEDIA_MOUNTED广播这不适用于我的android 4.4。 片剂。 我search了一个替代品,并find了“MediaScannerConnection”。 这里有几个例子,对我来说没有什么帮助,可以解决我的问题。

我正在寻找一个简单而干净的解决scheme,一个小的解释也会很好,检测一个USB存储是否连接,然后执行一些代码的机会。 而且如何使这个USB检查一直运行是另外一个问题。 我假设我必须把它放在OnResume方法,但我不太舒服。

请为您的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()获得mount到root的URI。

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

1) UsbManager#requestPermission

2) 意图#ACTION_OPEN_DOCUMENT_TREE作为存储访问框架的一部分