Recibo muchas solicitudes en mi aplicación para permitir paquetes de iconos personalizados de BetterCut/Open Home. La forma en que parece funcionar es instalar BetterCut o Open Home, luego puede instalar toneladas de estos paquetes de iconos gratuitos del mercado. Una vez instaladas, ambas aplicaciones (y otras aplicaciones) sondearán los paquetes de iconos y usarán los íconos.¿Acceso a los análisis de otra aplicación?
Quiero saber cómo sondear las aplicaciones de instalación para las carpetas de activos que están disponibles. Abrí algunos de los paquetes de iconos y verifiqué que hay una carpeta de activos allí y están llenos de todos los archivos png de iconos.
He buscado aquí, otros sitios de código, google, etc. pero no he encontrado ninguna pista.
ACTUALIZACIÓN:
A partir de la respuesta a continuación he escrito algo de código para tratar de enumerar un archivo de mi propio directorio activos proyectos pero no parece funcionar.
Resources r = this.getResources();
AssetManager a = r.getAssets();
String[] list = a.list("/");
Log.d("test", "Length of/is "+list.length);
for (String s : list) {
Log.d("test", s);
}
Log.d("test", "Length of /assets is "+a.list("/assets").length);
Log.d("test", "Length of /assets/ is "+a.list("/assets/").length);
Log.d("test", "Length of /assets/ is "+a.list("/assets/").length);
Log.d("test", "Length of ./assets/ is "+a.list("./assets/").length);
Log.d("test", "Length of ./assets is "+a.list("./assets").length);
Ésta es la salida:
03-16 12:25:04.591: DEBUG/test(13526): Length of/is 6
03-16 12:25:04.591: DEBUG/test(13526): AndroidManifest.xml
03-16 12:25:04.591: DEBUG/test(13526): META-INF
03-16 12:25:04.591: DEBUG/test(13526): assets
03-16 12:25:04.591: DEBUG/test(13526): classes.dex
03-16 12:25:04.591: DEBUG/test(13526): res
03-16 12:25:04.591: DEBUG/test(13526): resources.arsc
03-16 12:25:04.614: DEBUG/test(13526): Length of /assets is 0
03-16 12:25:04.637: DEBUG/test(13526): Length of /assets/ is 0
03-16 12:25:04.661: DEBUG/test(13526): Length of /assets/ is 0
03-16 12:25:04.692: DEBUG/test(13526): Length of ./assets/ is 0
03-16 12:25:04.716: DEBUG/test(13526): Length of ./assets is 0
ACTUALIZACIÓN 2 99% !!! No:
me di cuenta de que se puede leer desde el directorio de activos sin tener que usar el nombre de la carpeta:
InputStream is = assetManager.open("test.png");
También probé esto con un recurso en Appliction 2 desde la Aplicación 1, donde la ruta de la carpeta es/a sset/icono/image.png:
InputStream is = assetManager.open("icon/image.png");
siguiente me di cuenta de que se puede enumerar un directorio dentro activos:
String[] list = assetManager.list("icons");
Eso también funciona muy bien. Lo único que falla en este momento es cómo enumerar los activos del directorio base.
Esto parece hacer el truco, ¡gracias! También es gracioso que la cita sobre los activos del marco que se fusiona con la carpeta de activos sea realizada por un empleado de Google, Hackbod, que es la misma persona que no proporcionó la respuesta aquí. – pcm2a