[問題] android上層控制proc文件方式

作者: blueblance ( )   2015-11-02 19:46:10
各位大大好,想請問一下
我在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
應該是我寫入錯誤
想請問一下各位問題是出在哪裡呢?
作者: clanguage (C語言)   2015-11-02 20:30:00
會不會是你沒有權限阿?
作者: mshockwave (夏克維夫)   2015-11-02 23:26:00
adb 和普通app 的 group有時候會不一樣喔像是AOSP engineer版出來的adb權限都會給很大
作者: blueblance ( )   2015-11-03 09:53:00
請問我文件權限設為0666,APP還有可能會權限不夠嗎?
作者: leolarrel (真.粽子無雙)   2015-11-03 10:44:00
IOExeption e這個例外物件應該會保存錯誤的原因,找資料e這個物件的屬性都找一找看看有沒有,不然我們沒看到錯誤訊息也很難隔空抓藥
作者: blueblance ( )   2015-11-03 14:45:00
java.io.FileNotFoundException: /proc/ABCopen failed: EACCES (Permission denied)e的屬性是這樣 看樣子是 權限問題,但是我的文件中.open的時候顯示的訊息,卻能夠從APP去讀取還是說我include的函數,包到其他有權限的文件就會發生請問有辦法讓app有跟adb同樣的權限嗎?
作者: leolarrel (真.粽子無雙)   2015-11-04 12:41:00
android 執行時期可能還有額外的權限設定,adb 單純就只是一個標準的linux 程式,自然設成0666就沒問題,至於android 執行時期的權限設定要麻煩你去找google或其他高手了,這方面我不專業,對不起
作者: Bencrie   2015-11-04 12:49:00
adb shell 底下用 su 去切 uid就可以模擬 App 存取了App 最多就到 system 權限吧,要簽 platform key
作者: blueblance ( )   2015-11-05 10:39:00
感謝樓上大大的建議,後來發現應該是SElinux架構的影響在ADB中把SElinux給disable後就正常了~
作者: leolarrel (真.粽子無雙)   2015-11-05 11:49:00
果然是額外的權限設定,不過出貨的android都有enableSElinux吧
作者: blueblance ( )   2015-11-05 14:35:00
android 5.0之後好像都預設是開啟的,因為我是拿開發板另外有root的話,好像有APP能直接把SElinux關閉的樣子

Links booklink

Contact Us: admin [ a t ] ucptt.com