【发布时间】:2015-12-10 14:50:15
【问题描述】:
在我的应用程序中,我必须从数据文件夹中的文件中读取数据。但我不能那样做。我对此进行了搜索,但许多用户说您无法从数据文件夹中读取数据。我们看到Rootbrowser可以从android私有文件夹文件中读取数据。我的问题是如何从data/misc 文件夹中读取文件?
【问题讨论】:
在我的应用程序中,我必须从数据文件夹中的文件中读取数据。但我不能那样做。我对此进行了搜索,但许多用户说您无法从数据文件夹中读取数据。我们看到Rootbrowser可以从android私有文件夹文件中读取数据。我的问题是如何从data/misc 文件夹中读取文件?
【问题讨论】:
没有从任何文件夹中读取任何文件的解决方案(除非您的设备已植根,即使这样它也可能依赖于设备),但很可能您的问题需要比这更具体的东西。例如,如果一个应用程序想要将数据传递给另一个应用程序,这是可能的。如果您需要读取您自己的应用程序创建的文件,那完全没有问题。请就您的特定问题而不是一般情况提出问题。
更新:从 cmets 中的讨论结果表明,您使用的是 root 设备,并且对感兴趣文件夹的权限不允许所有人阅读它,这是关于访问策略的正常决定。如果您的应用只在有根手机上运行是可以的,您可以从 https://stackoverflow.com/a/26654728/755804 借用 sudoForResult()。
Runtime.getRuntime().exec("ls"); 和 sudoForResult("ls "+path) 之间的区别在于,在后一种情况下,ls 由 su 执行(通过 sudoForResult() 中的 Runtime.getRuntime().exec("su"); 调用),因此具有超级用户权限。
或者,您可以尝试为所有人开放对这些文件夹的访问权限。这将需要su,必须从您的程序中完成,并且很难测试,因为在第一次运行之后目录权限已经更改。 OTOH,如果您设法通过访问权限使该目录对您的应用程序可读,您可以取消设备根目录,并且您的应用程序仍然可以工作。
【讨论】:
ls -l /data/misc 和 ls -l /data/misc/ 来自控制台。你看到了什么?
ls -l /data/misc 和 ls -l /data/misc/ 时会显示什么输出?它必须是所有者、权限以及文件列表或错误消息。这是什么?
在我的应用程序中,我必须从数据文件夹中的文件中读取数据
如果“数据文件夹”是指/data 或其下的任意目录,则您没有对其中大部分内容的读取权限,除非可能在有根设备上。
我搜索过,但很多用户说您无法从数据文件夹中读取数据
正确。
我们看到Rootbrowser可以从android私有文件夹文件中读取数据
如果您所说的“Rootbrowser”是指Root Browser,则该应用只能在有根设备上执行此操作。你可以通过阅读产品描述来判断,它说:
根浏览器是根用户的终极文件管理器
【讨论】: