Voglio verificare se esiste o meno un file nella cartella/assets /. Come potrei farlo? Per favore aiuto.Come controllare la risorsa Risorse Android?
risposta
È necessario eseguire i propri controlli. Come so, non esiste un metodo per questo lavoro.
È possibile utilizzare Resources.openRawResourceFd (int resid)
http://developer.android.com/reference/android/content/res/Resources.html#openRawResourceFd%28int%29
Ho aggiunto un metodo di supporto a una delle mie classi di applicazioni. Lo presumo;
- l'elenco delle risorse non cambia mentre l'app è in esecuzione.
- il
List<String>
non è un master di memoria (solo 78 risorse nella mia app). - il controllo esiste() sull'Elenco è più veloce che provare ad aprire un File e gestire un'eccezione (non l'ho ancora profilata).
AssetManager am; List<String> mapList; /** * Checks if an asset exists. * * @param assetName * @return boolean - true if there is an asset with that name. */ public boolean checkIfInAssets(String assetName) { if (mapList == null) { am = getAssets(); try { mapList = Arrays.asList(am.list("")); } catch (IOException e) { } } return mapList.contains(assetName); }
'List.taintains()' restituisce già il valore booleano, non c'è bisogno dell'espressione ternaria alla fine della funzione. –
Si potrebbe anche solo tentare di aprire il flusso, se fallisce il file non c'è e se non manca il file dovrebbe essere lì:
/**
* Check if an asset exists. This will fail if the asset has a size < 1 byte.
* @param context
* @param path
* @return TRUE if the asset exists and FALSE otherwise
*/
public static boolean assetExists(Context context, String path) {
boolean bAssetOk = false;
try {
InputStream stream = context.getAssets().open(ASSET_BASE_PATH + path);
stream.close();
bAssetOk = true;
} catch (FileNotFoundException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
} catch (IOException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
}
return bAssetOk;
}
Questa soluzione è molto più veloce, quindi recupera l'intera cartella della risorsa come lista e controlla il contenimento. (Ho misurato ~ 50ms vs ~ 800ms sul mio dispositivo) – azendh
- 1. Come proteggere la risorsa estraibile nell'applicazione Android
- 2. Come aggiungere la riproduzione e la risorsa video all'applicazione Android
- 3. Impossibile ottenere la risorsa dall'applicazione Android
- 4. Android: Come ottenere un ID risorsa di una risorsa Android
- 5. Rails3 + Devise: Quando nidificare la risorsa in devise_for & risorse nidificate
- 6. Risorse stringa dinamiche Android
- 7. Risorse $ NotFoundException drawable-xhdpi dalla risorsa drawable
- 8. controllare Android
- 9. test di Android risorsa grezza
- 10. WebView Android JavaScript dalle risorse
- 11. RelativeLayout "Impossibile risolvere la risorsa ..." Android
- 12. Risorse $ NotFoundException in Android
- 13. Come assegnare risorse WPF ad altri tag risorsa
- 14. Come aggiornare la risorsa da Eclipse Plugin?
- 15. Come caricare dinamicamente la risorsa R.styleable?
- 16. android come utilizzare la risorsa stringa in una classe java
- 17. Impossibile sovrascrivere la risorsa xml della libreria con la risorsa png nell'applicazione?
- 18. Float Android/doppio tipo di risorsa
- 19. risorsa stringa sfondo Android
- 20. Utilizzo di Glide per Android, come caricare immagini da risorse e risorse
- 21. android falso risorsa non trovata eccezione
- 22. Android: numero intero dalla risorsa xml
- 23. Ignora risorse nella libreria android
- 24. come controllare la vera connessione Internet in Android?
- 25. DataBinding: come ottenere la risorsa dall'id dinamico?
- 26. Risorse Android $ NotFoundException
- 27. Risorsa annidata con più risorse parentali in Rails 3
- 28. Risorse Android per genere
- 29. Come posso controllare il dispositivo Android?
- 30. Android - Risorse $ NotFoundException
Anche io la penso così. Grazie. – Mudassir
Comprensibile che potrebbe non esserci un metodo per questo, ma se non è possibile fornire un'alternativa, questa non avrebbe dovuto essere una risposta. – Gowiem