解決 Android 4.4 後,記憶卡存取問題

克里斯 | HTC
Android 4.4 之後做了一個很大的改變,讓 App 無法自由寫入外接的記憶卡,讀取方面是不影響的,但是這樣一樣造成了很多問題,像是把照片都放在記憶卡上面,用看圖軟體是可以瀏覽沒錯,只是如果要移動,就會跳出視窗跟你說操作失敗。
Screenshot_2014-10-22-11-53-46.png
▲ 要把手機記憶體內的圖片放到記憶卡上,就出現這樣的問題
 

解決方法1 (不須 root)


當然,如果只是單一 App 要使用自己的專用資料夾,那還好解決,像是導航王,他所要使用的圖資要放在記憶卡中,如果像以前放在根目錄底下會有問題,要解決這個問題,只要把原本的圖資,放到 /data/com.kingwaytek/files/ 的資料夾中就可以,當然這個 /data/com.kingwaytek/files/ 的資料夾要自己手動建立。(PS.導航王的版本因為有很多種,資料夾名稱也各有不同,詳情請見導航王官網)

好的,問題來了,如果像是一開始提到的那樣,是照片要移動到記憶卡做備份的話,又該怎麼辦呢?要能在記憶卡中寫入變成一件非常麻煩的事情,當然我們可以使用手機系統內建的檔案管理員來解決這個搬移,但這種操作上畢竟不直覺,還要另外進出一套 App 來處理,還是有點麻煩,這個時候就只能 root 了。

各手機 root 的方法不一,在此不提供 root 方法,請自行拜請 Google 大神。

 

解決方法2 (須 root)


如果是像我一樣,想要取得完整的存取權,可以像以前一樣,在各個 App 之間自由地對外接記憶卡進行讀寫,你可以這樣做:
1.取得 root 權限
2.使用 root explorer 或其他可以存取系統資料夾的軟體
3.到 /system/etc/premissions/ 裡面,找到 platform.xml
4.使用編輯器,在 platform.xml 裡面加上下列文字:(藍色字體為新增,其餘為原有)

<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_r" />
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>
<permission name="android.permission.ACCESS_ALL_EXTERNAL_STORA GE" >
<group gid="sdcard_r" />
<group gid="sdcard_rw" />
<group gid="sdcard_all" />
<group gid="media_rw" />
</permission>

5.存檔

這樣子各個 App 就可以自由的寫入、存取記憶卡了。

如果你用的是 HTC 的手機,因為 HTC 的手機還有一層 S-ON 的防護,而這個防護會讓你即使在 root 之後,也無法改寫系統資料夾 (也就是 /system/ ),雖然你可以透過軟體去編寫 platform.xml,但是改了也沒用,而且每次重新開機之後,/system/ 資料夾裡面的東西都會被還原,如此一來,方法2 就沒有用了,但有些人就是不想要 S-OFF,甚或有人是無法 S-OFF (像我現在的 M8 就無法做到),那應該要怎麼辦呢?
 

方法3 (for HTC 手機,須 root,不須 S-OFF)


※這個方法相對地比較複雜,所以操作的時候請小心一點。
1. 首先要重新開機,進入 HBOOT 畫面 
IMAG0104.jpg

2.進入 Recovery (我用的是 TWRP)
IMAG0105.jpgIMAG0106.jpg

3.選擇 Mount,進入下面這個畫面,然後把 System 跟 Micro SDcard 打勾
IMAG0107.jpg

4.接著回到主選單 (按右下角的 back),進入 File Manager
IMAG0108.jpg

5.這裡會列出所有的資料夾,進入 system
IMAG0109.jpg

6.再進入 etc,然後看到 permissions,點進去
IMAG0110.jpgIMAG0112.jpg

7.在裡面找到 platform.xml (在很下面)
IMAG0113.jpg

8.點選 platform.xml 之後,會跳出這樣的選單,選 Cpoy File
IMAG0114.jpg

9.找到 external_sd,點選右下角的 Select
IMAG0115.jpgIMAG0116.jpg

10.接著關機,把記憶卡插到電腦上面,利用編輯器修改 platform.xml (我自己是用 Free XML editor)
sdcard.jpg放大鏡圖

11.在左邊的 permissions 裡面找到 WRITE_EXTERNAL_STORAGE 跟 ACCESS_ALL_EXTERNAL_STORAGE,視窗右邊的地方,加上<group gid="media_rw" />
,接著存檔,放回記憶卡。

12.開機進入 HBOOT 畫面,一樣進入 Recovery,重複 3. 跟 4. 步驟

13.進入 File Manager,點選 external_sd
IMAG0115.jpg

14.找到你修改後的 platform.xml,複製到 /system/ext/permissions 裡面

15.回到主畫面,重新開機

這樣就可以在各個 App 裡面,自由的讀取、寫入記憶卡囉!undefined
Screenshot_2014-10-22-13-03-36.png
​有需要的朋友就試試看吧!