2011-03-20 141 views
4

我對android開發非常陌生,並且正在尋找一種方法來修改eclipse中的現有源代碼,以便在安裝apk時,將xml文件從apk內複製到外部存儲上的特定文件夾。如何在安裝apk時在apk上創建一個文件?

有沒有辦法做到這一點?

+0

加一個小細節是什麼,我試圖做的,我有代碼,從網絡服務器下載文件的應用程序,然後做的東西他們。這個獲取文件的過程目前是在應用程序中的gui中處理的。一旦文件被下載到SD卡上,程序就會做它的東西。我想要做的是讓應用程序從正確的文件開始,並且不要將用戶暴露給GUI的選擇/下載部分。我正在尋找最簡單的方法來做到這一點,因爲我不是一個真正的編碼員。 – m13124 2011-03-20 20:57:00

回答

3

看到問題和答案在這裏... Android: How to create a directory on the SD Card and copy files from /res/raw to it??

編輯:關於它的思考,我用/資產的文件夾,而不是/ RES /生。這大概是我做什麼...

首先得到你的外部存儲(通常是SD卡)有效的文件夾...

File myFilesDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.mycompany.myApp/files"); 

路徑替換com.mycompany.myApp以上應用的程序包名稱。

那麼下面將從資產文件夾中的所有文件複製與文件名以「XYZ」開頭,例如,xyz123.txt,xyz456.xml等

try { 
    AssetManager am = getAssets(); 
    String[] list = am.list(""); 
    for (String s:list) { 
     if (s.startsWith("xyz")) { 
      Log.d(TAG, "Copying asset file " + s); 
      InputStream inStream = am.open(s); 
      int size = inStream.available(); 
      byte[] buffer = new byte[size]; 
      inStream.read(buffer); 
      inStream.close(); 
      FileOutputStream fos = new FileOutputStream(myFilesDir + "/" + s); 
      fos.write(buffer); 
      fos.close(); 
     } 
    } 
} 
catch (Exception e) { 
    // Better to handle specific exceptions such as IOException etc 
    // as this is just a catch-all 
} 

注意,您需要在以下權限AndroidManifest.xml文件...

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

謝謝!這看起來像我正在尋找的東西,但我太不能根據這個答案來實現它。我不是一個真正的編碼員,我在這裏工作了一點。有沒有什麼方法可以讓我看到一個代碼片段,說明在正確實施的情況下,這實際上會是什麼樣子? – m13124 2011-03-20 20:53:25

+0

@ m13124:在上面的答案中查看編輯。 – Squonk 2011-03-20 21:51:29

+0

謝謝MisterSquonk!我會給這個嘗試:) – m13124 2011-03-20 21:53:27