天天看點

53 java.io.IOException: open failed: EACCES (Permission denied)問題解決

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>之内,有時在它之外,哪個可以用哪個。

繼續閱讀