1. 問題描述:在Android中,用程式通路Sdcard時,有時出現“java.io.IOException: open failed: EACCES (Permission denied)", 這是由于沒有增加sdcard對應權限而導緻的。
2. 解決辦法:
在mainfest檔案中,增加以下權限:
<code style="padding: 0px; border-width: 0px; margin: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; vertical-align: baseline; background-color: rgb(238, 238, 238);"><span class="tag" style="padding: 0px; border-width: 0px; margin: 0px; vertical-align: baseline; background-color: transparent;"><uses-permission</span><span class="pln" style="padding: 0px; border-width: 0px; margin: 0px; vertical-align: baseline; background-color: transparent;"> </span><span class="atn" style="padding: 0px; border-width: 0px; margin: 0px; vertical-align: baseline; background-color: transparent;">android:name</span><span class="pun" style="padding: 0px; border-width: 0px; margin: 0px; vertical-align: baseline; background-color: transparent;">=</span><span class="atv" style="padding: 0px; border-width: 0px; margin: 0px; vertical-align: baseline; background-color: transparent;">"android.permission.WRITE_EXTERNAL_STORAGE"</span><span class="tag" style="padding: 0px; border-width: 0px; margin: 0px; vertical-align: baseline; background-color: transparent;">/></span></code>
問題解決。
3. 補充:
1). open failed: EISDIR (Is a directory):
這是由于你操作的對象是檔案,但是代碼中卻用的是路徑,把路徑“……/……/”最後一個“/”去掉,或者再添加一個檔案名,應該就可以了。
2). sdcard相關的另外一個權限:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
3). 權限的位置:
<application ......</application>之内,有時在它之外,哪個可以用哪個。