Me gustaría saber – hay maneras de acceder a android recursos y/o bienes de los archivos (o archivos desde cualquier otra carpeta) fuera de una Actividad (sin pasar contexto)?

No se puede acceder sin contexto:

getResources().getIdentifier("resource_name", "drawable", getPackageName());
getAssets().open("file_in_assets_folder_name");

Levanta una Excepción si no en la Actividad:

try {
    Class class = R.drawable.class;
    Field field = class.getField("resource_name");
    Integer i = new Integer(field.getInt(null));
} catch (Exception e) {}

También ha probado la de abajo, pero se queja de que el archivo no existe (haciendo algo mal aquí?):

URL url = new URL("file:///android_asset/file_name.ext");
InputSource source = new InputSource(url.openStream());
//exception looks like so 04-10 00:40:43.382: W/System.err(5547): java.io.FileNotFoundException: /android_asset/InfoItems.xml (No such file or directory)
  • Realmente no puedo entender. Quieres acceder a android recursos fuera de una actividad? De donde eres si no en una actividad? Y ¿qué son exactamente los de android recursos? A qué te refieres como el pre-instalado los iconos?
  • estás en una extensión de la clase o en alguna biblioteca de la clase que no tiene acceso al contexto?
  • ¿Por qué no quieres pasar un Contexto?
  • yoshi – como yo lo entiendo, las Actividades son cosas de usuario interactúa con. Mi RSS y XML analizar las clases no son por lo tanto las actividades. MisterSquonk – porque prefiero el simple hecho de tener una constante la variable que apunta a la ubicación de un archivo xml. Puedo hacer esto por un archivo xml remoto (rss), ¿por qué no para uno que incluir con mi aplicación?
InformationsquelleAutor Marc | 2012-04-09

2 Comentarios

  1. 5

    Si las carpetas están incluidos en el Proyecto de construcción de Camino, puede utilizar Cargador de clases acceder a los archivos debajo de ellos fuera de los android.contenido.Contexto, por ejemplo, a partir de un POJO (en caso de que usted no desea pasar una referencia de android.contenido.Contexto):

    String file = "res/raw/test.txt";
    InputStream in = this.getClass().getClassLoader().getResourceAsStream(file);
    • La carpeta res se incluye en el Proyecto de la Ruta de Compilación por defecto, todos los Android SDK versión hasta el momento.
    • La carpeta de activos se incluyó en el Proyecto de la Ruta de Compilación por defecto antes de SDK de Android r14.

    Para agregar carpetas en el Proyecto de la Ruta de Compilación, haga clic derecho en el proyecto — Build Path — Configure Build Path, agregar la carpeta (por ejemplo, activos si se utiliza después del SDK de la versión) como una Fuente carpeta en la ruta de compilación.

    Retirar la pregunta similar, me respondió antes de que en aquí.

    • Gracias, esto funciona bien para acceder a un archivo. Podría usted decirme si hay una manera (sin contexto) para acceder a R.java contenidos? (mi pregunta de arriba no estaba claro, por «android recursos» a los que me refería R.java).
    • ¿Qué se entiende por «acceso R.java contenido»? si te refieres a la importación/de uso público variables generados en R.java. Simplemente importar com.ejemplo.R en que clase POJO. Tenga en cuenta que R.java es auto-generada a partir de los recursos de la aplicación y el letrado cambiado por el SDK. No sé lo que quieres lograr, pero aquí no veo ningún punto para utilizar R.java fuera de android.contenido.Contexto.
    • Por el acceso que significaba ser capaz de obtener información acerca de los recursos. Por ejemplo, get int valor de identificador de nombre (similar a 1ª línea de código en cuestión). Yo simplemente no quería pasar en contexto si no me para.
    • Trate de añadir declaración import com.example.R en clase POJO.
    • Por alguna razón (probablemente ya se ha generado y ha de lujo métodos de acceso), que trataba en mi mente como un misterioso objeto en lugar de sólo una clase que tiene algunas variables públicas…
    • +1 bonita respuesta 🙂
    • Así que, básicamente, no hay manera de sensatez hacer uso de la plataforma android en el sistema de Recursos para almacenar una matriz de valores que nunca será cambiado en el interior de código en xml? Por ejemplo, una matriz de tipos.

  2. 1

    Android framework al compilar tu aplicación crear la clase estática llamada:

    your.namespace.project.R

    puede estáticamente llamar a esta clase como:

    your.namespace.project.R.string.my_prop
    
    this.context.findViewById(your.namespace.project.R.id.my_id_prop);

    Tal vez usted puede tener acceso a recursos dinámicos de esta manera:

    Resources res = this.context.getResources();
    int id = res.getIdentifier("bar"+Integer.toString(i+1), "id", this.context.getPackageName());

Dejar respuesta

Please enter your comment!
Please enter your name here