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
我创建了一个 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()
.
另请注意,这不适用于 Android 6.0 (M) 及更高版本。对于 6.0 及更高版本,您的代码必须通过以下两种方式之一请求访问 USB:
1) UsbManager#requestPermission
2) Intent#ACTION_OPEN_DOCUMENT_TREE as part of Storage Access Framework