看板 LinuxDev 關於我們 聯絡資訊
各位大大好,想請問一下 我在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