2011-11-11 53 views
5

有沒有辦法檢測USB閃存驅動器插入Android設備的時間?我可以使用廣播接收器檢測SD卡,但它不適用於USB。我想避免投票。Android:檢測插入的USB閃存驅動器

代碼以註冊接收器:

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

接收器代碼:

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

回答

2

的Android,在SDK的水平,沒有USB驅動器的概念。沒有規定應該在哪裏安裝它們,在它們出現/消失時進行廣播等等。也許這個領域的一些標準化將在未來的Android版本中出現,但是它今天不存在。

+0

Logcat顯示了一些與USB掛載有關的事件,但我無法在SDK級別檢測到這一點。聽起來像你說的是對的。 W/MountService(931):getVolumeState(/ mnt/usbdisk):未知卷 E/VoldConnector(931):錯誤處理'605卷usbdisk/mnt/usbdisk狀態從3(檢查)更改爲4(已裝入)' – Ravi

+0

任何運氣在這裏,我也使用ACTION_MEDIA_REMOVED和其他接收器相關的USB掛載和卸載...但沒有任何工作..但在命令提示符顯示USB日誌? – CoDe

+1

@Shubh:從Android 4.2開始,所寫的答案仍然準確無誤。 – CommonsWare

2

如果檢測到連接和分離USB將工作「android.hardware.usb.action.USB_DEVICE_ATTACHED」可以使用。 確保接收者和意圖過濾器的定義也添加到清單中。

相關問題