Contenuti accessibili di res / raw programmati (Android)

Sto lavorando su un'app App per Android con poche altre persone e il contenuto primario è specificato dai nostri progettisti come file di text in un determinato formato di file, che poi analizziamo, processiamo e serve nell'applicazione. Attualmente li stiamo conservando in res/raw .

Questo rende le cose grandi per i progettisti perché quando vogliono aggiungere contenuti, semplicemente aggiungere un file a res/raw . Ciò è fastidioso come sviluppatore, tuttavia, poiché gli sviluppatori devono aggiungere il file R.raw.the_new_file a un arrays nel codice specificando i file da elaborare all'avvio.

  • condividere l'image con whatsapp in android
  • Invio di file> 1MB con HTTP POST
  • Come get l'indirizzo Wi-Fi Mac in Android Marshmallow
  • Non get il file apk aggiornato, il progetto in esecuzione sul android studio
  • Invia text tramite Bluetooth da Java Server a Android Client
  • onAttach () non viene chiamato nel frammento
  • C'è un modo per accedere in modo programmato agli ID risorsa di res/raw ? Idealmente quando inizia l'applicazione, possiamo fare una chiamata per vedere quali file sono in res/raw , elaborarli tutti, per eliminare il piccolo overhead con il matching del contenuto di res/raw con quello del nostro arrays nel codice .

    Il path più promettente che ho visto è getAssets da Resources , che mi consentirebbe di call l' list(String) sull'AssetManager , ma ho avuto difficoltà a farlo funzionare, specialmente perché non puoi call direttamente "res/raw" come file di path (o alless, non ha funzionato quando ho provato.

    Suggerimenti? Grazie

  • Modifica del cassetto di navigazione Elemento selezionato Colore dal blu predefinito
  • Come posso tornare alla mia attività dalla window delle impostazioni GPS?
  • Non è ansible determinare se l'archivio Google Play è installato o less sul dispositivo Android
  • GoogleCloudMessaging script PHP restituisce sempre invalidregistration
  • Salvare e ripristinare lo stato espanso / compresso di un ExpandableListActivity
  • getLastKnownLocation restituisce null
  • 3 Solutions collect form web for “Contenuti accessibili di res / raw programmati (Android)”

    Potresti usare la riflessione.

     ArrayList<Integer> list = new ArrayList<Integer>(); Field[] fields = R.raw.class.getFields(); for(Field f : fields) try { list.add(f.getInt(null)); } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } 

    Dopo che l'elenco contiene tutti gli ID risorse nella cartella res / raw. Se hai bisogno del nome della risorsa … f.getName () lo restituisce.

    Questa risposta può essere un po 'in ritardo, si dovrebbe utilizzare invece la cartella degli asset. Là si può avere una gerarchia di cartelle e leggerla come un file system.

    Per le tue informazioni, getAssets restituisce un gestore per i file nella cartella "asset" del tuo progetto Android e non in "res / raw". "res / raw" entra nel pacchetto Java "R". asset.list (path) Restituisce una serie di file nella cartella data relativa alla cartella degli asset. La cartella del bene non è anche una cartella tradizionale, ma Android lo estrae in modo che "si sente" come file normali. Questo diventa più importnte se si sta facendo JNI e vuole leggere le proprie risorse da c / c ++.

    Potresti usare

     Context.getResources().getIdentifier("filename", "raw", "packagename"); 

    per get l'identificatore appropriato. tuttavia non capisco perché implementi la tua soluzione complicata? quali sono i vantaggi per il progettista? perché non solo mettere i file nella cartella disegnabile?

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.