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中弄清楚如何实现。 –