2011-11-11 18 views
5

C'è un modo per rilevare quando un'unità flash USB è collegata a un dispositivo Android? Sono in grado di rilevare una scheda SD utilizzando un ricevitore broadcast, ma non funziona con USB. Mi piacerebbe evitare il sondaggio.Android: Rileva unità flash USB collegata

codice per registrare il ricevitore:

private void RegisterUpdateReceiver() 
{ 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction("android.intent.action.MEDIA_MOUNTED"); 
    intentFilter.addDataScheme("file"); 
    myReceiver = new MyReceiver(); 
    this.registerReceiver(myReceiver, intentFilter); 
} 

codice ricevitore:

public class MyReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     String action = intent.getAction(); 
     if (action.equals("android.intent.action.MEDIA_MOUNTED")) 
     { 
      // react to event 
     } 
} 

risposta

2

Android, a livello di SDK, non ha il concetto di unità USB. Non ci sono regole per dove dovrebbero essere montati, trasmissioni per quando appaiono/scompaiono, ecc. Forse qualche standardizzazione in quest'area arriverà nelle future versioni di Android, ma non è lì oggi.

+0

Logcat mostra alcuni eventi relativi all'innesto USB, ma non riesco a rilevarlo a livello di SDK. Sembra che quello che stai dicendo sia giusto. W/MountService (931): getVolumeState (/ mnt/usbdisk): Volume sconosciuto E/VoldConnector (931): Errore nella gestione di '605 Volume usbdisk/mnt/usbdisk stato modificato da 3 (Verifica) a 4 (montato)' – Ravi

+0

qualsiasi fortuna qui, io uso anche ACTION_MEDIA_REMOVED e altro supporto USB relativo al ricevitore e smonta ... ma niente funziona ... ma nel prompt dei comandi mostra il log usb? – CoDe

+1

@Shubh: la risposta scritta è ancora accurata, a partire da Android 4.2. – CommonsWare

2

Se il rilevamento di collegamento e scollegamento dell'USB funziona, è possibile utilizzare "android.hardware.usb.action.USB_DEVICE_ATTACHED". Assicurati che la definizione del ricevitore e il filtro intent sia aggiunta anche nel manifest.

Problemi correlati