5
我需要使用由getFileDescriptor()返回的文件描述符來獲取文件絕對路徑。 我該怎麼做?如何在Android上使用文件描述符獲取文件路徑?
我需要使用由getFileDescriptor()返回的文件描述符來獲取文件絕對路徑。 我該怎麼做?如何在Android上使用文件描述符獲取文件路徑?
在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,或者在相同用戶標識下運行的任何其他進程。
調查這些USB設備文件的好主意!如果你構建一個debug apk,你可以使用adb shell'run-as your.package.name'來獲取一個shell作爲應用程序的userid,然後當它運行時,在應用程序進程的/ proc條目中使用該shell的ls -l來檢查fd鏈接,而不必從java中弄清楚如何實現。 –