2013-06-05 92 views
5

我需要使用由getFileDescriptor()返回的文件描述符來獲取文件絕對路徑。 我該怎麼做?如何在Android上使用文件描述符獲取文件路徑?

+0

調查這些USB設備文件的好主意!如果你構建一個debug apk,你可以使用adb shell'run-as your.package.name'來獲取一個shell作爲應用程序的userid,然後當它運行時,在應用程序進程的/ proc條目中使用該shell的ls -l來檢查fd鏈接,而不必從java中弄清楚如何實現。 –

回答

2

在Linux內核下運行的系統,這將是所有當前 Android的實現,每個文件描述符將有/proc/[processid]/fd一個條目是一個符號鏈接文件描述符的目標 - 不僅對普通文件,但也適用於許多其他可能的目標,如管道和插座。

下面是一個cat > /mnt/sdcard/foo進程運行在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] 

閱讀在Java中的符號鏈接「留給作爲練習讀者」上的部分例子。

在桌面Linux上,有lsof工具可以通過這些目錄瀏覽所有進程並丟棄一系列打開的文件 - 但是,Android在每個應用程序用戶ID的使用會限制這樣的拖釣。但是您仍然可以查找屬於您的應用程序本身的fd,或者在相同用戶標識下運行的任何其他進程。

相關問題