1
wwqgtxx 2014-09-22 06:28:32 +08:00 via Android
因为那个文件的所有者是wifi而不是root,你用re管理器看一下就知道了,hosts文件的所有者才是root
你需要chmod一下权限 |
4
xylophone21 2014-09-22 13:49:05 +08:00
Android上的APK获取了root权限是指你的应用可以使用su(一般位于/system/bin/su)了,而非直接改变你进程的uid.
如果需要以root权限做事,请使用su.具体的例子你搜一下权限管理工具SuperSU神马的的SDK或者文档. 换句话说,获取root权限后,如果你不调用su,跟没获取没什么两样. |
5
loveyu OP @xylophone21 这个我知道的,最后找到的解决方案就是使用cp复制到缓存目录,再读取。这是我能想到的最简单的办法了
|
6
wszf 2014-09-22 15:11:45 +08:00
你是shell的root.并不是java级的root,肯定没有权限读取.
|
7
xylophone21 2014-09-22 15:17:22 +08:00 1
@loveyu
E/Read﹕ /data/misc/wifi/wpa_supplicant.conf: open failed: EACCES (Permission denied) 这句看起来很像Java代码打印的(没找到具体代码),怀疑你是用Java代码读的. 但su一般来说用起来是: proc = runtime.exec("su"); osw = new OutputStreamWriter(proc.getOutputStream()); osw.write(command); osw.flush(); osw.close(); 要使Java代码以root身份运行还是蛮麻烦的.(感觉需要自己再启一个虚拟机?没试过) 大胆猜测你应该没这么做. 所以想来想去,还是只有上面那个可能性最大. 注意,使用su是指只有proc是root权限,你的apk本身还是原来的权限. PS:你copy的时候是不是用的类似上面代码把命令赋给command,但直接读取不是用的命令行? |
8
loveyu OP @xylophone21 后来我也发现了,要提升APK的权限太难,只好通过cp data/misc/wifi/wpa_supplicant.conf /data/data/...../cache/ 然后再读取,这样就没有问题了,我想知道的是为啥改为777依旧不可读
|
9
porrat 2014-09-22 18:39:46 +08:00 via Android
apk进程的权限是系统通过UID检查确定的,跟文件本身的权限没啥关系
|
10
xylophone21 2014-09-22 18:52:49 +08:00
如果你只想读文件内容的话,试试cat,然后
InputStream inputstream = proc.getInputStream(); |
11
loveyu OP @xylophone21 这个东西我试了好几次,都是无响应了,问题一直不清楚
|