Android detecta almacenamiento usb para kitkat(4.4)
android-4.4-kitkat (1)
Publique el código para su BroadcastReceiver y AndroidManifest.xml.
El manifiesto debería parecerse a algo como
<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>
Tenga en cuenta la etiqueta de
data
, a menudo se pasa por alto.
En su implementación onReceive, el URI a la raíz del montaje se puede obtener de
Intent#getData()
.
También tenga en cuenta que esto no funcionará en Android 6.0 (M) y superior. Para 6.0 y superiores, su código debe solicitar acceso a USB a través de una de dos formas:
1) UsbManager#requestPermission
2) Intent#ACTION_OPEN_DOCUMENT_TREE como parte de Storage Access Framework
He creado una aplicación webview que aloja un sitio web dentro de la aplicación en el directorio de activos. Quiero actualizar el sitio web a través de una memoria USB insertada en la ranura USB de mi tableta. Lo intenté primero con la transmisión .MEDIA_MOUNTED que no funciona para mi Android 4.4. Tableta. Busqué una alternativa y encontré la "MediaScannerConnection". Aquí hay varios ejemplos que no me ayudaron mucho para resolver mi problema.
Estoy buscando una solución fácil y limpia y una pequeña explicación también sería buena para detectar si un almacenamiento USB está conectado y la posibilidad de ejecutar algún código después. Y cómo hacer que esta verificación USB se ejecute todo el tiempo es una pregunta adicional. Supongo que tengo que ponerlo en el método OnResume, pero no estoy del todo seguro.