Android: Erkennen, wenn eine SD-Karte als Laufwerk an einen Computer angeschlossen ist

8

Ich schreibe eine Anwendung, die erkennen muss, wenn die SD-Karte als ein Laufwerk über USB an einen Computer angeschlossen ist oder wenn sie manuell entfernt wurde. Ich habe versucht, einen Broadcast-Empfänger für diesen Zweck zu verwenden, aber das onReceive wird nicht angerufen. Mein Code ist wie folgt.

%Vor%

Mein Rundfunkempfänger ist wie folgt ...

%Vor%

Die onReceive-Methode wird nicht ausgelöst, wenn ich eine Verbindung über USB als Laufwerk herstelle.

Was mache ich falsch?

    
Heshan Perera 10.04.2012, 12:27
quelle

3 Antworten

11

Sie müssen das Schema "file" hinzufügen (addDataScheme ("file")), damit IntentFilter die Broadcast-Action ACTION_MEDIA_ * abgleichen kann.

Die ACTION_MEDIA_ * Absichten haben den Pfad zum Mount-Punkt im Feld Intent.mData (siehe Intent docs ), aber ein IntentFilter ohne festgelegte Schemas passt nur dann zu einem Intent, wenn er keine Daten enthält (siehe IntentFilter-Dokumente ).

    
Massycat 02.05.2012, 17:14
quelle
3

Dies wird derzeit auf SDK-Ebene nicht unterstützt.

Quelle: Android: USB-Flash-Laufwerk erkannt eingesteckt

    
Chromium 10.04.2012 13:01
quelle
1

Scheinbar funktioniert ACTION_UMS_CONNECTED nicht. Ich muss an API Version 8 arbeiten, daher ist android.os.storage.StorageEventListener nicht anwendbar.

Ich habe die Antwort hier verwendet, um eine statische Variable in einem Thread zu aktualisieren. Dies kann auch verwendet werden, um eine benutzerdefinierte Sendung auszuführen. Die Methode ist wie folgt ... * HINWEIS: HardwareManager ist eine benutzerdefinierte Klasse

%Vor%

Dann an anderer Stelle, erstelle ich einen Thread aus diesem Runnable und starte ihn.

%Vor%     
Heshan Perera 11.04.2012 04:00
quelle