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
}
}
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
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
@Shubh: la risposta scritta è ancora accurata, a partire da Android 4.2. – CommonsWare