作者blueblance (贺!!真的失恋了)
看板LinuxDev
标题[问题] android上层控制proc文件方式
时间Mon Nov 2 19:46:10 2015
各位大大好,想请问一下
我在android 5.0的kernel中建立了一个proc文件
进到adb shell中也可以正常的写入
EX: echo ABC > /proc/test
也确实会做出我要的动作
但我在android studio中做一个APP想要做一样的动作
File test = new File(/proc/test)
try{
FileWriter fr = new FileWriter(test);
fr.write("ABC");
fr.close
}catch(IOExeption e){
textview_msg.setTest("fail")
}
像这样的程式却没有写进/proc/test中没有做出我想要的动作
在textview_msg中也都是显示fail
应该是我写入错误
想请问一下各位问题是出在哪里呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.130.190.15
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1446464773.A.901.html
1F:推 clanguage: 会不会是你没有权限阿? 11/02 20:30
2F:→ mshockwave: adb 和普通app 的 group有时候会不一样喔 11/02 23:26
3F:→ mshockwave: 像是AOSP engineer版出来的adb权限都会给很大 11/02 23:27
4F:→ blueblance: 请问我文件权限设为0666,APP还有可能会权限不够吗? 11/03 09:53
5F:→ leolarrel: IOExeption e这个例外物件应该会保存错误的原因,找资料 11/03 10:44
6F:→ leolarrel: e这个物件的属性都找一找看看有没有,不然我们没看到错 11/03 10:45
7F:→ leolarrel: 误讯息也很难隔空抓药 11/03 10:45
8F:→ blueblance: java.io.FileNotFoundException: /proc/ABC 11/03 14:45
9F:→ blueblance: open failed: EACCES (Permission denied) 11/03 14:45
10F:→ blueblance: e的属性是这样 看样子是 权限问题,但是我的文件中 11/03 14:45
11F:→ blueblance: .open的时候显示的讯息,却能够从APP去读取 11/03 14:48
12F:→ blueblance: 还是说我include的函数,包到其他有权限的文件就会发生 11/03 14:50
13F:→ blueblance: 请问有办法让app有跟adb同样的权限吗? 11/03 14:51
14F:→ leolarrel: android 执行时期可能还有额外的权限设定,adb 单纯就只 11/04 12:41
15F:→ leolarrel: 是一个标准的linux 程式,自然设成0666就没问题,至於 11/04 12:42
16F:→ leolarrel: android 执行时期的权限设定要麻烦你去找google或其他 11/04 12:43
17F:→ leolarrel: 高手了,这方面我不专业,对不起 11/04 12:43
18F:推 Bencrie: adb shell 底下用 su 去切 uid就可以模拟 App 存取了 11/04 12:49
19F:→ Bencrie: App 最多就到 system 权限吧,要签 platform key 11/04 12:50
20F:→ blueblance: 感谢楼上大大的建议,後来发现应该是SElinux架构的影响 11/05 10:39
21F:→ blueblance: 在ADB中把SElinux给disable後就正常了~ 11/05 10:40
22F:→ leolarrel: 果然是额外的权限设定,不过出货的android都有enable 11/05 11:49
23F:→ leolarrel: SElinux吧 11/05 11:49
24F:→ blueblance: android 5.0之後好像都预设是开启的,因为我是拿开发板 11/05 14:35
25F:→ blueblance: 另外有root的话,好像有APP能直接把SElinux关闭的样子 11/05 14:36