Android检测kitkat的USB存储(4.4)

时间:2016-03-24 19:15:48

标签: android android-4.4-kitkat

我创建了一个webview应用程序,它在assets-directory中的应用程序中托管一个网站。 我想通过插入我的平板电脑usbslot的USBstick更新网站。 我首先尝试使用.MEDIA_MOUNTED广播,这对我的android 4.4无效。片剂。 我搜索了另一种选择并找到了“MediaScannerConnection”。 这里有几个例子对解决我的问题没什么帮助。

我正在寻找一个简单而干净的解决方案,一点点解释也很好,以检测是否连接了USB存储器以及之后执行某些代码的机会。 如何让这个USB检查一直运行是一个问题。我假设我必须把它放在OnResume方法中,但我不太舒服。

1 个答案:

答案 0 :(得分:3)

请为您的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)Intent#ACTION_OPEN_DOCUMENT_TREE作为Storage Access Framework

的一部分