各位大大好,想请问一下
我在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
应该是我写入错误
想请问一下各位问题是出在哪里呢?
adb 和普通app 的 group有时候会不一样喔像是AOSP engineer版出来的adb权限都会给很大
请问我文件权限设为0666,APP还有可能会权限不够吗?
IOExeption e这个例外物件应该会保存错误的原因,找资料e这个物件的属性都找一找看看有没有,不然我们没看到错误讯息也很难隔空抓药
java.io.FileNotFoundException: /proc/ABCopen failed: EACCES (Permission denied)e的属性是这样 看样子是 权限问题,但是我的文件中.open的时候显示的讯息,却能够从APP去读取还是说我include的函数,包到其他有权限的文件就会发生请问有办法让app有跟adb同样的权限吗?
android 执行时期可能还有额外的权限设定,adb 单纯就只是一个标准的linux 程式,自然设成0666就没问题,至于android 执行时期的权限设定要麻烦你去找google或其他高手了,这方面我不专业,对不起
adb shell 底下用 su 去切 uid就可以模拟 App 存取了App 最多就到 system 权限吧,要签 platform key
感谢楼上大大的建议,后来发现应该是SElinux架构的影响在ADB中把SElinux给disable后就正常了~
果然是额外的权限设定,不过出货的android都有enableSElinux吧
android 5.0之后好像都默认是开启的,因为我是拿开发板另外有root的话,好像有APP能直接把SElinux关闭的样子