2011-11-09 13 views
5

Tengo una aplicación C# que necesitará acceder a los archivos que están en mi tableta Android, obviamente puedo usar la letra de unidad montada para el almacenamiento pero la implementaré en múltiples ubicaciones y necesita una manera consistente de acceder a los archivos. Puedo llamar a ADB mediante programación, pero de nuevo, lo estoy implementando en varias ubicaciones y no puedo instalar el SDK en todos los sistemas.Acceso mediante programación a archivos en dispositivos Android desde PC

así que supongo que estoy buscando a cualquiera: 1) Acceso programmaticaly el dispositivo usando C# (o java) o 2) Uso ADB sin tener que instalar el SDK en cada lugar o 3) Estudia la unidad letra del dispositivo conectado mediante programación

como usted podría haber adivinado que estoy tratando de hacer esto lo más fluida posible

PS Un ejemplo de una aplicación que funciona de esta manera es HTC Sync. Si alguien sabe cómo funciona esa aplicación, sería perfecto.

+1

I would go with solution # 3. este enlace puede ser útil http://stackoverflow.com/questions/123927/how-to-find-usb-driveletter – Loman

+2

No necesita instalar el SDK completo para usar las operaciones de ADB. Como va a implementar esto en varios sistemas, puede empaquetar adb.exe, AdbWinApi.dll, AdbWinUsbApi.dll (archivos de Windows ... Si usa Linux, modifíquelos en consecuencia. Como C# asumo Windows) en un zip archiva y escribe tu código que llama a los métodos de ADB para extraer tus archivos – dymmeh

+0

Gracias por las sugerencias. Los probaré y veré cuál funciona mejor en mi situación. –

Respuesta

0

Esto es lo que se me ocurrió para que tal vez comiences.

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

Esto es definitivamente útil, pero el nombre de las unidades es simplemente "Disco extraíble", por lo que d.Name.Contains ("android") siempre devolverá false. Así que tal vez solo puedo verificar si es la única unidad extraíble y si no indico al usuario a elegir la correcta. –

+0

android es el nombre de una carpeta en el nivel superior de la unidad extraíble, por lo que si cada unidad de Android tuviera una carpeta que contiene la palabra "android", la encontraría, no es una solución determinista, pero creía que era un inicio –

+0

O ok veo lo que dices, supongo que si no hay una carpeta que contenga "android" siempre puedo crear una para que la unidad se pueda identificar. Gracias por la sugerencia. –

Cuestiones relacionadas