2011-11-11 9 views
5

Y at-il un moyen de détecter quand un lecteur flash USB est branché sur un appareil Android? Je suis capable de détecter une carte SD en utilisant un récepteur de diffusion, mais cela ne fonctionne pas pour l'USB. J'aimerais éviter les sondages.Android: Détecter le lecteur flash USB branché

Code

pour enregistrer récepteur:

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

code récepteur:

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

Répondre

2

Android, au niveau du SDK, n'a pas de concept de clés USB. Il n'y a pas de règles pour l'endroit où ils doivent être montés, les diffusions pour quand ils apparaissent/disparaissent, etc. Peut-être que la normalisation dans ce domaine viendra dans les futures versions Android, mais il n'est pas là aujourd'hui.

+0

Logcat affiche certains événements liés au montage USB, mais je ne peux pas le détecter au niveau du SDK. On dirait que ce que vous dites est juste. W/MountService (931): getVolumeState (/ mnt/usbdisk): volume inconnu E/VoldConnector (931): Erreur lors de la gestion de l'état 605 Volume usbdisk/mnt/usbdisk changé de 3 (vérification) à 4 (monté) ' – Ravi

+0

chance ici, j'utilise aussi ACTION_MEDIA_REMOVED et d'autres montages USB liés à un récepteur et démonter ... mais rien ne fonctionne ... mais dans l'invite de commande il montre le journal USB? – CoDe

+1

@Shubh: La réponse telle qu'elle est écrite est toujours exacte, à partir d'Android 4.2. – CommonsWare

2

Si vous détectez la connexion et le détachement de l'USB, vous pouvez utiliser "android.hardware.usb.action.USB_DEVICE_ATTACHED". Assurez-vous que la définition du récepteur et le filtre d'intention sont également ajoutés dans le manifeste.

Questions connexes