2013-07-09 54 views
1

我有從我的資產目錄應用安裝「/數據/數據/名稱複製文件(二進制文件的.so)的問題。 ofmy.app/lib「目錄。的Android例外「打開失敗:EACCES(拒絕)」 - 不是由於SD卡

當我嘗試,我得到以下錯誤:

07-09 11:00:48.902: W/System.err(25122): java.io.FileNotFoundException: /data/data/name.ofmy.app/lib/libOlsrdPudWireFormat.so: open failed: EACCES (Permission denied)

這種情況發生在下面的代碼被ececuted:

if ((so = new File(dir, fileName)).exists()) { 
    /* 
    * Check to see if this timestamp pre-dates the current package 
    */ 
    if ((pkg = new File(ctx.getPackageResourcePath())).exists()) { 
     if (pkg.lastModified() < so.lastModified()) { 
      Log.v(TAG, "extractFile: File up to date"); 
      return; 
     } 
    } 
    Log.v(TAG, "extractFile: library present but out of date"); 
    so.delete(); 
} 
Log.v(TAG, "extractFile: copying library"); 
InputStream in = ctx.getAssets().open(name); 
FileOutputStream out = new FileOutputStream(so); 

它的權利在InputStream in = ctx.getAssets().open(name);休息時,沒有一個已經存在的與該文件的文件名...

我一直在這裏閱讀棧溢出 類似的問題,但不幸的是這並沒有幫幫我。大多數是複製到SD卡,但我不是。

而且奇怪的是,以前的目錄(如/ bin而不是/ lib中),這也是我的資產內提供,並沒有任何問題,在同一被複制/ DAT /數據...目錄!

我嘗試添加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />許可無濟於事。

我甚至嘗試添加Runtime.getRuntime().exec("su");就在我試圖複製任何東西,也無濟於事。

這是一個根植手機BTW!

我也仔細檢查過,如果文件真的存在於資產中,那就是!

+0

移動此評論爲答案 – TiGer

回答

1

只是爲了試圖起見,我從lib改變了目錄名libs(因爲提到了我的問題,我也複製命名爲/bin另一個目錄中沒有任何問題),並猜測:現在的作品!

看來你不能使用/lib目錄名,而複製。不過,我不知道爲什麼。

+0

採用Android我偶爾會已經能夠使用DD,而不是CP的其中Cp是行不通的。一個longshot,但可以做你需要的東西 – o0rebelious0o

+0

多數民衆贊成在一個很好的提示,但在我的具體情況下,我使用filestreams複製不使用Linux命令! – TiGer

0

肯定你忘了在清單:

<manifest 
    . 
    . 
</application> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
</manifest> 
+1

不是這種情況... – TiGer

+0

不應該第一個「」是「」? –

相關問題