我需要能够将文本文件写入我的Android设备的根目录(如this related questions explains)。
我可以更改根目录的写权限吗?如果是,如何更改?
我尝试使用adb推送文件,但它说文件系统是只读的=(
令人讨厌的是我无法控制自己的设备,一切都是如此受限=(
编辑1: 这个线程已演变成讨论Sygic Navigation及其API,这在Android平台上似乎是错误的。我还有一些其他问题可以讨论Sygic及其导航软件。
答案 0 :(得分:6)
仅当您具有root访问权限时。
答案 1 :(得分:5)
答案 2 :(得分:3)
默认不是。官方Android设备上提供的根文件系统是只读的,只有某些受到良好约束的区域才能被应用程序写入。但是,对于许多可用的Android设备存在根本漏洞,它们允许您对文件系统执行任何操作。
答案 3 :(得分:3)
如果你想获得创意并且在没有root权限的情况下绕过(愚蠢的)/
要求,你可以使用fakechroot,来自debian的LD_PRELOAD
库。
编辑:对于java程序due to the way vm instances are forked out来说,这可能是不可能的。本机程序必须与无用的链接器(没有LD_PRELOAD)竞争,但是如果可以启动任意程序,则替代链接器将不需要root权限。
答案 4 :(得分:2)
ROOT被调用,由于某种原因,出于同样的原因,ROOT用户被调用。 ROOT之外的任何人都拥有/将会出错并违反每个UNIX安全主体。出于好的原因你不能这样做,尝试这样做是不好的。
答案 5 :(得分:2)
我已经快速浏览了Sygic API Documentation。确实说输入文件来自根目录。它还说输出文件将放在根目录中。它甚至将“根目录”以粗体显示,因此您知道他们非常认真地认为这是数据文件所在的位置。
如前所述,没有Android应用程序有权在标准手机上写入此目录,因此 Sygic文档必须是错误的。我的猜测是,这是Sygic运行的其他平台的行为,但他们没有更新Android的文档。
我希望他们通过Intent
而不是文件接受数据,但如果没有适当的文档,很难知道你能做什么。
API文档确实提到了.out
和.event
个文件。也许可以查看设备上的文件系统,看看是否可以找到任何文件系统。如果可以,.in
文件可能位于同一目录中。
答案 6 :(得分:1)
你说'当应用程序放在移动设备的根目录下时,它会读取并解析.in文件。'
我非常怀疑这个应用程序是否能够读取手机的真实根目录。我认为它可能是通过usb大容量存储器公开的根目录,也就是/ sdcard /.
答案 7 :(得分:0)
简短回答:不,你不能。
答案很长:不,你不能,也不应该。
咆哮:
我很抱歉你可能不喜欢你在这里收到的一些答案,但它们并不像你说的那样'聪明的评论'(他们很聪明,但不聪明)。
相反,您所看到的是其他开发人员,可能拥有更多经验在平台上,为您提供真实警告和良好建议。他们警告你,你所处的路径反映了一些糟糕的设计决定。
你说过:
我正在使用一个我无法控制的外部应用程序,并且根据他们的API:当应用程序放在移动设备的根目录中时,应用程序读取并解析.in文件。和我们有理由不在其他任何地方保存文件,我无法“审查”我的设计
但是当commonsware.com说:
时,它是完全正确的然后停止使用“外部应用程序”,无论“外部应用程序”是什么意思。它显然不是Android APK,因为他们不会发送需要能够写入根目录的东西。
此外,您沮丧地评论说:
是的,不幸的是,每个人都“生根” 要使用此解决方案的设备是 可能不是一个选择=(该死的,每一个 我尝试在android中做的一件事 不适合这个或那个原因=(
有很多原因导致Android操作系统没有也不应该允许每个开发人员和他们的祖母完全控制根目录/系统目录,但是我会问你这个问题,而不是列出一些问题。修辞):
如果有任何软件可以随时更改这些设置,为什么还要打扰访问控制和权限?
如果我知道它能够摧毁我的整个设备就像喝醉了的大象一样,那么下载智能手机的应用程序是不会感到很舒服的。
我可以继续咆哮,但我会在这里停下来......