Android frameworks層讀寫sdcard
阿新 • • 發佈:2019-02-08
場景和思路
我們想在frameworks層讀寫sdcard,但是直接讀寫是不行的,提示許可權不足。於是就想怎麼把它所屬的程序找出來,然後給這個程序加sdcard讀寫許可權。
做法
android.os.Process.myPid()
方法可以獲取當前程式碼所在的程序的id。再通過ps|grep [pid]
命令,我們可以知道frameworks中的程式碼所屬system_server程序,而system_server程序又是由Zygote孵化出來的,於是我們在frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
看到startSystemServer
system/core/include/private/android_filesystem_config.h
可以找到關於sdcard_rw的定義:
#define AID_SDCARD_RW 1015 /* external storage write access */
最後,我們在–setgroups字串後面加上1015,重新編譯frameworks,就可以了。