【问题标题】:Android: Reading files currently held by the OS (e.g., /dev/log/main, /dev/input/event*)Android:读取操作系统当前持有的文件(例如,/dev/log/main、/dev/input/event*)
【发布时间】:2012-05-02 23:13:03
【问题描述】:

/dev/log/main/dev/input/event* 等文件始终由操作系统保存。如果你 cat 文件,文件末尾将不会显示,新词将不断附加到你的“cat”结果中。

当我使用new FileInputStream 打开此类文件时,它总是以权限被拒绝作为响应(可能是因为它们正被我之前提到的其他用途使用)。 /proc/cpuinfo 等文件的权限不会被拒绝。

有没有办法读取这些文件?我想知道/dev/input/event*是否有任何用户输入。

【问题讨论】:

  • 你的Manifest中有日志读取权限吗?
  • @Joe Simpson 是的。我有。没有它,我无法读取我的 logcat 结果。
  • 我认为实际上阅读 /dev/input/event* 是使用 root ,否则你很容易窥探人们的密码等。
  • @Joe Simpson 听起来很合理。但我只需要知道是否有新的输入。我不需要阅读文件的详细信息。也许我可以检查文件的大小是否改变。感谢您的回复;》
  • 请问为什么?什么样的应用需要这种东西?

标签: android file io


【解决方案1】:

Android 上 /data/local 之外的大多数文件都需要 root 权限才能查看。我不记得设备上默认的 bin 命令是什么,但如果你安装 BusyBox,你可以在目录中运行 ls -l 并获取访问文件所需的权限列表。

您很可能需要对您所在的设备进行 root - 这会将“su”命令添加到您的 bin 目录中,以便您可以获得 root shell 访问权限。

如果您决定这样做并且需要以编程方式运行,这里有一个 shell 接口类,您可以将其包含在您的项目中。

我希望这有助于提供一些见解。

https://github.com/jjNford/android-shell

【讨论】:

  • 感谢您的信息。但我想我可以成功打开像“/proc/cpuinfo”这样的文件。我认为我无法打开“/dev/input/event*”的主要原因是因为它们一直被使用。文件没有结尾,就像使用不带“-d”的命令 logcat 时一样。
  • 谢谢你的回答。但我似乎只能接受一个答案:
  • @HaoShen 我认为打开“/dev/input/event*”时应该需要root权限。我之前也试过。我用 c 编写测试程序,并尝试打开该文件。如果我在 adb shell 中启动它,这个程序运行良好。但是,如果我像这样从 java 应用程序调用它: Runtime.getRuntime().exec("su", NULL, new File(test_program_path));然后,打开“/dev/input/event*”时失败。我不知道为什么,但据此我确信您无法打开问题中提到的“/dev/input/event*”的原因不是因为它们一直被使用,事实上,这是许可.
【解决方案2】:

Linux 与 Windows 不同,不会因为其他进程打开文件而锁定文件。我刚刚在我的 HTC Desire 上打开了一个外壳,然后看了看:

$ ls -l /dev/input
crw-rw---- root     input     13,  73 2012-03-02 19:19 event9
crw-rw---- root     input     13,  72 2012-03-02 19:19 event8
(etc)

如您所见,这些文件只能由用户“root”和组“input”读写。

像 /proc/cpuinfo 这样的文件是有意为全世界可读的,因为它们包含内核提供给进程的信息。事实上,/proc 中的所有文件都不是真正的文件:整个 /proc 包含的条目仅存在于内核中,而不存在于磁盘中。

【讨论】:

  • 哦。谢谢您的回复。所以你的意思是我需要获得root权限才能阅读它们?我想大概就是这样。然后我觉得我需要放弃这种方式,因为我不想获得root权限:
  • @D'Oliveiro 嗨,今天我检查了文件/proc/cpuinfo $ ls -l /proc/cpuinfo -r--r--r-- root root 0 2012-04-22 19:19 cpuinfo 结果也显示只能root读取。所以我现在感到困惑......
  • @D'Oliveiro 即使没有root,至少我可以'cat'文件/dev/input/event*,这是否意味着即使非root用户也可以读取这些文件?跨度>
猜你喜欢
  • 2014-09-20
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2014-12-15
相关资源
最近更新 更多