Vor kurzem habe ich versucht, die Absicht android.hardware.usb.action.USB_DEVICE_ATTACHED mit einem Broadcast-Empfänger zu erhalten, wie in allen Samples und Beispielen, die ich gesehen habe.
Ich habe einen Empfänger im Manifest deklariert;
%Vor%Ich habe das auch im activity code gemacht - onStart und OnStop registrieren / entmelden den Empfänger.
%Vor%Ich stelle jedoch fest, dass die Absicht nur erwischt wird. Logcat beobachten Ich kann sehen, dass das Anhängen eines USB-Geräts nach Aktivitäten sucht, die gestartet werden sollen, während das Trennen der Verbindung die Entfernungsabsicht ausstrahlt. Laut den oben genannten Proben sollte dies nicht der Fall sein.
Fehle ich etwas drastisch in Bezug auf Metadaten? Ich habe überhaupt keine Probleme mit android.hardware.usb.action.USB_DEVICE_DETACHED. Vielleicht ist das ein Fehler mit der Android-Version, die auf der Galaxy S3 installiert ist? Vielleicht ist dies ein ICS-Feature.
Jede relevante Information ist willkommen!
Dies ist ein bekannter Fehler:
und hier:
Aber halte nicht den Atem an und warte darauf, dass es repariert wird. Während Sie sich den Fehlerbericht ansehen, markieren Sie ihn, damit Sie über Aktualisierungen des Berichts benachrichtigt werden. Wahrscheinlich werden das Kommentare von anderen Leuten sein, die darum bitten, dass es repariert wird.
Die Problemumgehung, die ich für USB_ACCESSORY_ATTACHED
gefunden habe, besteht darin, nur eine Schaltfläche zu haben, die meine OpenAccessory(accessory)
-Methode erneut aufruft und das scheint für mich zu funktionieren. Vielleicht funktioniert das auch für USB_DEVICE_ATTACHED
. Stellen Sie einfach einen angeschlossenen / nicht verbundenen Status irgendwo her und wenn er nicht verbunden ist, kann der Benutzer einfach diesen Knopf drücken.
Edit: Ich habe festgestellt, dass android:launchMode="singleTask"
im Manifest zu setzen scheint, um die Absicht von USB_ACCESSORY_ATTACHED
zu "registrieren", obwohl es nie so aussieht, als ob es das tut, was es macht.
Sie können den Intent-Filter im Manifest wie folgt deklarieren: Ссылка
Dann fangen Sie android.hardware.usb.action.USB_DEVICE_ATTACHED in onResume () oder in onNewIntent ().
Wenn Ihre Aktivität ausgeführt wird und Sie Ihr USB-Gerät anhängen, wird die Hauptabsicht an onResume () übergeben, aber android.hardware.usb.action.USB_DEVICE_ATTACHED an onNewIntent (). Passen Sie Ihren Code entsprechend an.
Sie können onNewIntent () wie folgt deklarieren:
%Vor%und onResume () ähnlich.
getestet auf Android 4.0.4 Gerät: Samsung Galaxy Tab 750