Comment accéder aux ressources dans un projet de bibliothèque Android

Je construis un projet de bibliothèque Android qui nécessite des ressources statiques (images / xml et etc.) en interne.

Ensuite, je me demande où je peux mettre ces ressources et comment y accéder?

  • Comment ajouter une image d'arrière-plan à une activité Android?
  • Alternative pour glBlitFrameBuffer () dans OpenGL ES 2.0
  • Comment définir et utiliser une propriété système dans Android Instrumentation test?
  • Comment instruire les utilisateurs à signaler un bug dans Android
  • Android: image de 9 patch sans étirement comme prévu
  • Comment voir l'aperçu de xml dans Android Studio
  • Puisque je place les ressources dans le dossier des assets . Et j'utilise AssetManager pour accéder aux ressources:

     public class DataProvider { byte[] getDrawableData(int num) { AssetManager am = Resources.getSystem().getAssets(); InputStream is = null; try { is = am.open("t.jpg"); } catch (IOException e) { return "".getBytes(); } if (is != null) { Drawable dw = Drawable.createFromStream(is, null); Bitmap bm = ((BitmapDrawable) dw).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, stream); return stream.toByteArray(); } return "".getBytes(); } } 

    Cependant, j'ai eu l'erreur: W/System.err(19583): java.io.FileNotFoundException: t.jpg

    Quel est le problème?


    Comme Sankar V déclaré que le projet de la bibliothèque ne supporte pas les actifs bruts. Ensuite, il me semble que je dois mettre les resurves sous le dossier res .

    Mais j'ai essayé d'utiliser la méthode Resources.getSystem().getResources().... qui ne peut pas obtenir ce que je veux. Et les gens ont déclaré que cette méthode ne peut qu'apporter les ressources au niveau du système plutôt que les ressources au niveau de l'application.

    Si c'est la vérité. Cela signifie-t-il que je dois tenir une référence de l'objet Context partout où je veux obtenir des ressources?

  • Comment détecter un anneau d'appel sortant dans Android en utilisant la classe Visualizer?
  • Ajouter la barre d'outils de recherche sur la carte google comme dans l'application Android native
  • Google Maps Android API v2 lance GooglePlayServicesNotAvailableException, obsolète, SupportMapFragment.getMap () renvoie null
  • Marqueurs distincts nommés sur Google Carte Android
  • Android Build Target ne peut être sélectionné dans eclipse
  • Comment puis-je faire un SurfaceView plus grand que l'écran?
  • 2 Solutions collect form web for “Comment accéder aux ressources dans un projet de bibliothèque Android”

    Ensuite, je me demande où je peux mettre ces ressources et comment y accéder?

    From Android Doc's

    Les projets de bibliothèque ne peuvent pas inclure des actifs bruts

    Les outils ne prennent pas en charge l'utilisation de fichiers d'actifs bruts (sauvegardés dans l'actif / répertoire) dans un projet de bibliothèque. Les ressources d'actifs utilisées par une application doivent être stockées dans l'actif / répertoire du projet d'application lui-même. Cependant, les fichiers de ressources enregistrés dans le répertoire res / sont pris en charge .

    Lien de référence de Docs: LibraryProjects

    Solution: Comment accéder aux fichiers de ressources enregistrés dans res / directory of library project from application project

    Remarque: Si vous souhaitez accéder aux ressources du Projet de Bibliothèque, ajoutez les ressources à res/ directory ne sont pas dans les assets . Étant donné que les fichiers dans les actifs ne seront pas regroupés avec le fichier .jar. Vous pouvez y accéder comme d'habitude en utilisant la référence générée dans le fichier R.java .

    Ex: Pour accéder à une image à partir d'une utilisation dessinable

     R.drawable.image_name 

    Cela signifie-t-il que je dois tenir une référence de l'objet Contexte partout où je veux obtenir des ressources?

    Vraiment, vous devriez tenir une référence au contexte pour accéder aux ressources

    Mettre à jour:

    Maintenant, le projet de bibliothèque Android peut être généré en tant que fichier aar (Archive Android) qui vous permet de regrouper les fichiers de ressources nécessaires au projet de la bibliothèque au lieu de l'ancien fichier jar (Java Archive) qui ne vous permet que de regrouper des classes Java.

    Ou vous pouvez utiliser un dossier lié dans Eclipse et lier votre dossier d'actifs à votre nouveau projet.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.