2016-03-24 8 views
0

Ich habe eine Webview-App erstellt, die eine Website innerhalb der App im Anlagen-Verzeichnis hostet. Ich möchte die Website über einen USB-Stick aktualisieren, der in meinen Tabletts usbslot eingefügt ist. Ich versuchte es zuerst mit der .MEDIA_MOUNTED Sendung, die für meinen Android 4.4 nicht funktioniert. Tablette. Ich habe nach einer Alternative gesucht und die "MediaScannerConnection" gefunden. Es gibt mehrere Beispiele, die mir nicht sehr geholfen haben, mein Problem zu lösen.Android erkennt USB-Speicher für kitkat (4.4)

Ich suche eine einfache und saubere Lösung und eine kleine Erklärung wäre auch nett, um festzustellen, ob ein USB-Speicher angeschlossen ist und die Möglichkeit, etwas Code danach auszuführen. Und wie macht man diesen USB-Check laufen die ganze Zeit ist eine Frage dazu. Ich nehme an, ich muss es in die OnResume-Methode schreiben, aber ich bin nicht ganz sicher.

+0

Sie sollten nicht direkt ein Verzeichnis, rufen, sondern die Verwendung "Enviroment" zur Abfrage von Dateien (z. B. 'Environment.getExternalStorageDirectory()') – Bonatti

Antwort

2

Bitte geben Sie den Code für Ihren BroadcastReceiver und AndroidManifest.xml ein.

Manifest so etwas wie

<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> 

Notiere die data Tag aussehen sollte, ist es oft übersehen.

In Ihrer onReceive-Implementierung kann der URI zum Stammverzeichnis von mount von Intent#getData() abgerufen werden.

Beachten Sie auch, dass dies nicht auf Android 6.0 (M) und höher funktioniert. Für 6.0 und höher Code Zugriff auf USB über eine von zwei Arten beantragen müssen:

1) UsbManager#requestPermission

2) Intent#ACTION_OPEN_DOCUMENT_TREE als Teil Storage Access Framework

+0

Discover (reagieren auf Attach-Ereignisse) ist unter Android 6+ mit dem Intent-Filter [android.hardware.usb.action.USB_DEVICE_ATTACHED] (https: //developer.android.com/guide/topics/connectivity/usb/host.html#discovering-d) – OneWorld

Verwandte Themen