7
votes

Android: Comment récupérer le nom du fichier et l'extension d'une ressource par ID de ressource

J'ai ce qui suit:

getResources().getResourceEntryName(resourceId);


0 commentaires

4 Réponses :


1
votes

Réponse courte: vous ne pouvez pas.

Une autre façon de le faire, seraient de mettre vos graphiques à l'intérieur du dossier d'actifs. Ensuite, vous pouvez accéder aux fichiers directement, sans votre application nécessitant une autorisation.

Vous pouvez, par exemple, le faire dans votre activité: xxx

i J'espère que cela accomplira ce que vous aviez à l'esprit.


update : il semble que ce soit bien possible, voir La réponse de Aleksandar Stojiljkovic à la place.


3 commentaires

Le problème est que j'ai besoin que les fichiers soient dans des ressources pour montrer dans des images et pour pouvoir le montrer dans webview. Donc, WebView a besoin d'un lien vers le fichier (y compris l'extension). Je l'ai résolu comme une solution de contournement en déclarant 2 tableaux dans des valeurs / des tableaux.xml. Un avec les ID de ressources et une avec leurs extensions de nom de fichier.


S'avère que est possible, la solution d'Aleksandar fonctionne!


D'accord, j'ai mis à jour ma réponse pour diriger les utilisateurs à sa réponse. Merci pour l'information!



15
votes

Pour obtenir "res / dessinable / pic.jpg" Vous pouvez utiliser ceci:

    TypedValue value = new TypedValue();
    getResources().getValue(resourceId, value, true);
    // check value.string if not null - it is not null for drawables...

    Log.d(TAG, "Resource filename:" + value.string.toString());
    // ^^ This would print res/drawable/pic.jpg


2 commentaires

En effet, et il y a d'API Niveau 1 :) Marquage comme solution


Ne fonctionne pas, retourne myImage.xml pour moi même si la vraie extension est png.



3
votes

Vous pouvez le faire

    Field[] fields = R.raw.class.getFields();
    for (int count = 0; count < fields.length; count++) {

        // Use that if you just need the file name
        String filename = fields[count].getName();
        Log.i("filename", filename);
        int rawId = getResources().getIdentifier(filename, "raw", getPackageName());
        TypedValue value = new TypedValue();
        getResources().getValue(rawId, value, true);
        String[] s = value.string.toString().split("/");
        Log.i("filename", s[s.length - 1]);
    }


0 commentaires

1
votes

Ceci devrait être la meilleure solution: xxx

resname = "pic.jpg"


0 commentaires