2011-11-09 16 views
5

Ho un'applicazione C# che dovrà accedere ai file che sono sul mio tablet Android, ovviamente posso semplicemente usare la lettera di unità montata per l'archiviazione ma lo distribuirò in più posizioni e hanno bisogno di un modo coerente per accedere ai file. Sono in grado di chiamare ADB a livello di codice, ma ancora una volta, lo sto distribuendo in più posizioni e non posso installare l'SDK su tutti i sistemi.Accesso programmatico ai file sul dispositivo Android dal PC

quindi credo che sto cercando di uno: 1) programmaticaly accedere al dispositivo utilizzando C# (o Java) o 2) Utilizzare ADB senza dover installare l'SDK in ogni posizione o 3) conoscere le unità lettera del dispositivo collegato a livello di codice

come si indovinava che sto cercando di rendere questo più semplice possibile

PS Un esempio di un'applicazione che funziona in questo modo è HTC Sync, se qualcuno sa come farebbe quella applicazione sarebbe perfetto.

+1

Vorrei andare con la soluzione n. questo collegamento potrebbe essere utile http://stackoverflow.com/questions/123927/how-to-find-usb-drive-letter – Loman

+2

Non è necessario installare l'SDK completo per utilizzare le operazioni ADB. Dal momento che stai per distribuire questo a più sistemi, puoi impacchettare adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll (file Windows .. Se stai usando Linux, modifica di conseguenza. Poiché C# presumo windows) in un file zip file e scrivi il tuo codice che chiama i metodi ADB per estrarre i tuoi file – dymmeh

+0

Grazie per i suggerimenti. Li proverò e vedrò quale funziona meglio nella mia situazione. –

risposta

0

Ecco cosa ti ho proposto per iniziare.

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

Questo è sicuramente utile ma il nome dell'unità è solo "Disco rimovibile", quindi d.Name.Contains ("android") restituirà sempre false. Quindi forse posso controllare se è l'unica unità rimovibile e se non richiedere all'utente di scegliere quella corretta. –

+0

android è il nome di una cartella al livello più alto dell'unità rimovibile, quindi se tutte le unità Android avessero una cartella contenente la parola "android" lo trovere- non è una soluzione deterministica, ma pensavo che fosse un inizio –

+0

O ok vedo quello che stai dicendo, suppongo che se non esiste una cartella che contiene "android" posso sempre crearne una in modo che l'unità possa essere identificata. Grazie per il suggerimento. –

Problemi correlati