各位大大好,想請問一下
我在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關閉的樣子