2012-08-29 101 views

回答

2

嘗試這個用戶的卡,

private void copyAssets() { 
    AssetManager assetManager = getAssets(); 
    String[] files = null; 
    try { 
     files = assetManager.list(""); 
    } catch (IOException e) { 
     Log.e("tag", e.getMessage()); 
    } 
    for(String filename : files) { 
     InputStream in = null; 
     OutputStream out = null; 
     try { 
      in = assetManager.open(filename); 
      out = new FileOutputStream("/sdcard/" + filename); 
      copyFile(in, out); 
      in.close(); 
      in = null; 
      out.flush(); 
      out.close(); 
      out = null; 
     } catch(Exception e) { 
      Log.e("tag", e.getMessage()); 
     }  
    } 
} 
private void copyFile(InputStream in, OutputStream out) throws IOException { 
    byte[] buffer = new byte[1024]; 
    int read; 
    while((read = in.read(buffer)) != -1){ 
     out.write(buffer, 0, read); 
    } 
} 

不要忘了在你的manifiest添加此權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

AssetManager assetManager = getAssets(); ,,什麼是getAssets? –

+0

它是你的應用程序的資產文件夾。 – Aerrow

+0

我該如何檢查這是否是第一次用戶運行應用程序,因爲我不想每次都發生複製? –

0

所以,我需要做的事端g除了所有文件外都是相似的,並且在啓動時用於AOSP軟件包。如果有人感興趣,這裏是包的鏈接(請參閱AssetCopyReceiver.java)。

https://github.com/Paradopolis/AssetCopier/blob/master/src/com/paradopolis/assetcopier/AssetCopyReceiver.java

這將在SD卡中的所有文件複製到它們各自的位置,同時也應與子目錄工作。它可以作爲啓動接收器使用,它不適用於普通應用程序,因此需要修改,但代碼相同。當我從那裏開始時,它主要基於第一個答案,並且糾正了我在需要擴展時遇到的一些問題。

相關問題