2011-11-09 126 views
5

我有一個C#應用程序,需要訪問我的android平板電腦上的文件,顯然我可以使用裝入的驅動器盤符來存儲,但我將在多個位置部署並需要一致的方式來訪問這些文件。我可以通過編程方式調用ADB,但是我再次將它部署到多個位置,並且無法在每個系統上安裝SDK。以編程方式訪問Android設備上的文件從PC

所以我想我期待之一: 1)programmaticaly使用C#(或Java) 或2)利用亞行訪問設備,而不必在每個位置 安裝SDK或3)找出驅動連接的設備編程

正如你可能已經猜到我試圖使這一儘可能無縫

PS信以這種方式工作的應用程序的一個例子是HTC Sync,如果任何人知道該應用程序如何做,那將是完美的。

+1

我會去解決方案#3。此鏈接可能會有所幫助http://stackoverflow.com/questions/123927/how-to-find-usb-drive-letter – Loman

+2

您不需要安裝完整的SDK以使用ADB操作。由於您將要將其部署到多個系統,因此您可以將adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll(Windows文件..如果您使用的是Linux進行了相應的修改,因爲C#我承擔Windows)文件並編寫調用ADB方法來提取文件的代碼 – dymmeh

+0

感謝您的建議。我會嘗試一下,看看哪一個在我的情況下效果最好。 –

回答

0

下面是我想出來的,也許你可能從一開始。

var drives = DriveInfo.GetDrives(); 

var removableFatDrives = drives.Where(
     c=>c.DriveType == DriveType.Removable && 
     c.DriveFormat == "FAT" && 
     c.IsReady); 

var andriods = from c in removableFatDrives 
       from d in c.RootDirectory.EnumerateDirectories() 
       where d.Name.Contains("android") 
       select c; 
+0

這絕對有幫助,但驅動器名稱只是「可移動磁盤」,所以d.Name.Contains(「android」)將始終返回false。所以,也許我可以檢查它是否是唯一的可移動驅動器,如果不提示用戶選擇正確的驅動器。 –

+0

android是可移動驅動器頂層文件夾的名稱 - 因此,如果每個android驅動器都有一個包含單詞「android」的文件夾,您會發現它 - 它不是一個確定性的解決方案,但它是一個開始 –

+0

O好的,我明白你的意思了,我想如果沒有包含「android」的文件夾,我總是可以創建一個文件夾,以便識別驅動器。感謝您的建議。 –

相關問題