在我的Android應用我已經打包在需要複製到的SD卡的/ assets文件夾中的文件。當我列出的資產文件夾的內容到String[]
我得到「圖像」,「聲音」,「WebKit的」和「kioskmode」但不是我的文件手動添加到資產的文件夾。爲什麼AssetManager list()不顯示我的資產文件夾?
我的代碼是在這裏:
private void copyAsset() {
AssetManager am = getApplicationContext().getAssets();
String[] files = null;
try {
files = am.list("");
} catch (IOException e) {
}
for (String filename : files) {
if (filename.equals("images") || filename.equals("kioskmode") ||
filename.equals("sounds") || filename.equals("webkit")) {
Log.i(TAG, "Skipping folder " + filename);
continue;
}
InputStream in = null;
OutputStream out = null;
try {
in = am.open(filename);
File outFile = new File(Environment.getExternalStorageDirectory().getPath(), filename);
out = new FileOutputStream(outFile);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "Error copying asset ", e);
}
}
}
是否有所作爲,這是第二類在我的應用程序,被稱爲使用Intent showHelper = new Intent(this, HelperManager.class); startActivity(showHelper);
我的MainActivity?
我曾嘗試使用和不使用getApplicationContext()
位的第二線(AssetManager am = ...
),試圖將文件移動到/資產的子目錄,並試圖用files = am.list("")
前緣和後斜線。如果我使用一個子文件夾中的文件數組爲空當代碼運行(在files = am.list("");
行設置斷點,並檢查它在運行時 奇怪的是,它的工作一次 - 當我第一次寫的代碼,但進一步測試,我刪除了手機上的/ SD卡文件夾中的文件,因爲即使文件仍處於資產文件夾它從來沒有工作過。 我使用過Android Studio,如果該事項。 感謝
你有什麼東西嗎?資產文件夾裏面? – Blackbelt
是的,我做@blackbelt如果我瀏覽到項目位置,我可以在Android Studio的項目佈局中以及在Windows資源管理器中看到它。也許我會嘗試刪除並重新添加文件(它是一個.apk btw)。 – Mark
如果這些文件與apk版捆綁在一起,那你就很好。你瞭解'continue'關鍵字的含義嗎?你想要的「圖像」,「聲音」,「WebKit的」和「kioskmode內部SD卡寫入? – Blackbelt