0

私はいくつかの画像をアプリケーションに表示する必要があります。Q. は、電話にアプリケーションをインストールする際に、コードのアセット フォルダーに入れている画像をユーザーの SC カードの下のフォルダーにコピーする方法です。

4

2 に答える 2

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);
    }
}

マニフェストにこの許可を追加することを忘れないでください

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
于 2012-08-29T08:18:49.280 に答える
0

そのため、すべてのファイルを除き、AOSP パッケージの起動時に同様のことを行う必要がありました。興味のある方は、パッケージへのリンクを次に示します (AssetCopyReceiver.java を参照)。

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

これにより、sdcard の下のすべてのファイルがそれぞれの場所にコピーされ、サブディレクトリでも機能するはずです。これは、通常のアプリでは機能しないオン ブート レシーバーとして機能するため、変更する必要がありますが、コードは同じです。そこから始めたときの最初の回答に大きく基づいており、拡張する必要があったときに見つけたいくつかの問題を修正しました。

于 2014-02-03T22:12:54.360 に答える