web-dev-qa-db-fra.com

android assetManager

J'ai besoin d'obtenir le chemin absolu vers le dossier dans les actifs. Certains aiment ceci pour la carte SD:

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

Qu'est-ce que je fais mal?

enter image description here

D'abord, j'essaye d'obtenir le chemin (en rectangle vert) de cette façon mais j'obtiens toujours "Faux". Ensuite, je commente ce bloc et essaie d'obtenir le chemin à partir de getAssets (). List (); Mais je reçois 3 dossiers que je vois la première fois.

Je veux rendre massif comme ça "vert" mais j'ai besoin d'utiliser des fichiers à partir des actifs:

Regardez l'image

Aidez-moi à obtenir un chemin absolu vers mon dossier Fichiers.

21
Val

Je ne sais pas exactement ce que vous essayez de faire, alors je vais essayer de couvrir les bases, et peut-être que cela vous aidera.

  • Si vous essayez simplement d'obtenir une liste de ce qui se trouve dans vos actifs, utilisez getAssets().list("Files"). (Vous devez utiliser le sous-répertoire, à cause de this ).

  • Si vous essayez d'obtenir un chemin absolu vers votre répertoire d'actifs (ou n'importe quel sous-répertoire), vous ne pouvez pas. Tout ce qui se trouve dans le répertoire des actifs se trouve dans l'APK. Ce n'est pas dans un stockage externe comme sur une carte SD.

  • Si vous essayez d'ouvrir des fichiers dans le répertoire des ressources, utilisez AssetManager.open(filename) pour obtenir le InputStream. Ici, le nom de fichier doit être le chemin relatif du répertoire des ressources.


[~ # ~] modifier [~ # ~]

Je ne sais pas trop ce que vous entendez par "massif", mais si vous voulez charger le fichier black.png à partir des ressources au lieu de la carte SD, puis écrivez ceci:

// 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

Les ressources sont stockées dans le fichier APK, il n'y a donc pas de chemin absolu que votre application peut utiliser. Mais, je suggère de jeter un œil au fichier: /// Android_asset. Cela pourrait correspondre à vos besoins. Voici un bon exemple sur la façon d'afficher un actif dans une WebView.

1