2013-06-05 16 views
5

Ho bisogno di ottenere il percorso assoluto del file utilizzando il descrittore di file che è stato restituito da getFileDescriptor(). Come posso farlo?Come ottenere il percorso del file utilizzando il descrittore di file su Android?

+0

Bella idea per indagare su quei file di dispositivo USB! Se costruisci un apk debug, puoi usare adb shell 'run-as your.package.name' per ottenere una shell come id utente dell'app e poi mentre è in esecuzione usa ls -l da quella shell nelle voci/proc del processo app per esaminare i collegamenti fd, piuttosto che dover capire come farlo da java. –

risposta

2

In un sistema in esecuzione con un kernel Linux, che sarebbe tutti attuali implementazioni Android, ogni descrittore di file avrà una voce in /proc/[processid]/fd che è un link simbolico al target del descrittore di file - non solo per i file regolari , ma anche per molti altri possibili obiettivi come tubi e prese.

Ecco un esempio parziale per un cat > /mnt/sdcard/foo processo in esecuzione su un dispositivo Android

$ ls -l /proc/3528/fd 
lrwx------ shell shell    2013-06-06 10:31 0 -> /dev/pts/1 
l-wx------ shell shell    2013-06-06 10:31 1 -> /mnt/sdcard/foo 
lrwx------ shell shell    2013-06-06 10:31 2 -> /dev/pts/1 
lrwx------ shell shell    2013-06-06 10:31 6 -> socket:[188850] 

lettura collegamenti simbolici in Java "è lasciato come esercizio per il lettore".

Su un desktop Linux, c'è lo strumento lsof che esegue il troll attraverso queste directory per tutti i processi e scarica un elenco di file aperti, tuttavia, ciò non sarebbe troppo utile su Android dove l'utilizzo di user-per-app limiterebbe trolling simile. Ma puoi ancora cercare il file fd appartenente alla tua app stessa o qualsiasi altro processo in esecuzione sotto lo stesso id utente.

Problemi correlati