web-dev-qa-db-ja.com

android assetManager

AssetsのFolderへの絶対パスを取得する必要があります。 SDカードの場合、次のようになります。

final String sdDir = Environment.getExternalStorageDirectory() + "Files";

私が間違っていることは何ですか?

enter image description here

最初に、この方法でパスを取得しようとします(緑の角で)が、「False」を取得する必要があります。次に、このブロックをコメント化し、getAssets()。list()からパスを取得しようとします。しかし、私は初めて見る3つのフォルダーを取得します。

この「グリーン」のように大規模にしたいのですが、アセットのファイルを使用する必要があります。

画像を見る

ファイルフォルダーへの絶対パスを取得するのに役立ちます。

22
Val

あなたが何をしようとしているのか正確にはわからないので、基盤をカバーしようとします。

  • アセットの内容のリストを取得しようとしている場合は、getAssets().list("Files")を使用します。 ( this のため、サブディレクトリを使用する必要があります)。

  • アセットディレクトリ(またはサブディレクトリ)へのabsoluteパスを取得しようとしている場合は、できません。アセットディレクトリにあるものはすべてAPKにあります。 SDカードのような外部ストレージにはありません。

  • アセットディレクトリ内のファイルを開こうとしている場合は、AssetManager.open(filename)を使用してInputStreamを取得します。ここで、ファイル名は、アセットディレクトリからの相対パスである必要があります。


[〜#〜] edit [〜#〜]

"massive"の意味がわかりませんが、ファイルをロードする場合はblack.png SDカードの代わりにアセットから、次のように記述します。

// must be called from Activity method, such as onCreate()
AssetManager assetMgr = this.getAssets();
mColors = new Bitmap[] {
    BitmapFactory.decodeStream(assetMgr.open("black.png"));
    // and the rest
};
17
Steve Blackwell

アセットはAPKファイルに保存されるため、アプリケーションで使用できる絶対パスはありません。ただし、file:/// Android_assetを確認することをお勧めします。ニーズに合うかもしれません。 これが良い例です WebViewでアセットを表示する方法について。