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