En J2ME, he de hacer esto, como que:
getClass().getResourceAsStream("/raw_resources.dat");

Pero en android, siempre me nulo en esto, ¿por qué?

  • Hay una enorme diferencia entre la programación para android y J2ME
  • Es gracioso leer un comentario a una pregunta acerca de algo que funciona de forma idéntica en Android y J2ME. Ver mi respuesta.
InformationsquelleAutor Arkaha | 2010-05-18

7 Comentarios

  1. 26
    InputStream raw = context.getAssets().open("filename.ext");
    
    Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
    • Por favor vea la respuesta por Samuh (abajo), que es más preciso.
    • Como una nota del lado, raw carpeta no permitir el acceso por nombre de archivo. Algunas aplicaciones necesitan dinámico de nombres de archivo de modo que en estos casos assets carpeta es útil
    • él no preguntar acerca de los activos/ le preguntó acerca de la res/raw/
    • Esta no es la manera de hacerlo en Android. Compruebe Samuh respuesta.
    • Él dijo: res de la carpeta, no la carpeta assets.
    • Mientras que las objeciones son sensibles (él quiere recurso es decir, archivos con conocidos de los lectores y formatos de contenido y no de un bajo nivel de activos) – hay un caso donde el uso de los activos que realmente ayudó. En un android de prueba caso de que el BitmapFactory.decode ( getContext().getResources() , R. dibujable.id ) me daría null – incluso a través del mismo código trabajó en la aplicación. Utilizando el bajo nivel de activos me ayudó a abrir el mapa de bits como y manejarlo como un byte del búfer, lo que permite ejecutar la prueba correctamente (aunque en un hackish manera)
    • Cómo iba yo a escribir esto en Kotlin? val raw = context.getAssets().open("$resFileName.mp3") no está funcionando para mí.

  2. 119

    Para los archivos raw, usted debería considerar la creación de un raw carpeta dentro de res directorio y, a continuación, llamar a getResources().openRawResource(resourceName) de su actividad.

    • Samuh, gracias por su respuesta, si hago esto, tengo errores de Android en Formato XML Problema, porque yo uso no estándar xml, hay otra manera de utilizarla como realmente los datos raw?
    • ¿qué quiere decir que no estándar XML? Puede empaquetar archivos XML en activos también.
    • Samuh, me voy a portar la aplicación j2me, y tiene los archivos con extensión *.xml, el contenido de dichos archivos muy similar a xml, pero no es el mismo, eclipse gritando en estos archivos, ya que no se puede compilar. probablemente me pueden establecer algún tipo de «ignorar» en el este de los archivos? pero no sé cómo..
    • Archivos en res/raw no se procesan de alguna manera por el compilador de recursos, por lo que no generará errores debido a su contenido.
    • pero a través de esta técnica, se consigue compilar tim comprobación de la presencia de resoure archivos y eso es un gran paso para asegurar la calidad del código.
    • Hey Samuah. Tengo un proyecto de prueba de X que las pruebas del proyecto Y. Proyecto Y tiene la biblioteca de Z como referencia. biblioteca Z tiene un raw de recursos R que estoy tratando de abrir, pero sigo recibiendo recurso no encontrado. Alguna idea de por qué el fragmento no funciona para esto?
    • problema común cuando se tienen diferentes R. Usted simplemente no hacer referencia a la derecha R. de Verificación de las importaciones o de referencia de la derecha R que tiene el recurso.

  3. 13

    En algunas situaciones, tenemos que conseguir que la imagen de dibujable o raw carpeta con el nombre de la imagen en su lugar si el id generado

    //Image View Object 
            mIv = (ImageView) findViewById(R.id.xidIma);
    //create context Object for  to Fetch  image from resourse 
    Context mContext=getApplicationContext();
    
    //getResources().getIdentifier("image_name","res_folder_name", package_name);
    
    //find out below example 
        int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());
    
    //now we will get contsant id for that image       
            mIv.setBackgroundResource(i);
    • Esta línea: int i = mContext.getResources().getIdentifier(«ic_launcher»,»crudo», mContext.getPackageName()); es de ORO
  4. 5

    Un avance enfoque es el uso de Kotlin Función de extensión

    fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
        return resources.openRawResource(resourceId)
    }

    Una cosa más interesante es la función de extensión de uso que se define en Closeable ámbito

    Por ejemplo, usted puede trabajar con el flujo de entrada en forma elegante, sin manejo de Excepciones y la memoria de gestión

    fun Context.readRaw(@RawRes resourceId: Int): String {
        return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
    }
  5. 4
    TextView txtvw = (TextView)findViewById(R.id.TextView01);
            txtvw.setText(readTxt());
    
     private String readTxt()
        {
        InputStream raw = getResources().openRawResource(R.raw.hello);
    
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    
        int i;
        try
        {
            i = raw.read();
            while (i != -1)
            {
                byteArrayOutputStream.write(i);
                i = raw.read();
            }
            raw.close();
        }
        catch (IOException e)
        {
            //TODO Auto-generated catch block
    
            e.printStackTrace();
        }
    
    
        return byteArrayOutputStream.toString();
    
    }

    TextView01:: txtview en linearlayout
    hola:: .archivo txt en res/raw carpeta (u, puede acceder a ny othr carpeta como wel)

    Ist 2 líneas 2 escrito en onCreate() método

    resto debe ser escrita en la clase de la ampliación de la Actividad!!

  6. 3

    InputStream in = getResources().openRawResource(resourceName);

    Esto funcionará correctamente. Antes de que usted tiene que crear el archivo xml de texto /archivo en raw de recursos. Entonces éste será accesible.

    Editar
    Algunas veces com.andriod.R se importará si hay cualquier error en el archivo de diseño o de nombres de imagen. Así que Usted tiene que importar el paquete correctamente, a continuación, sólo el archivo raw será accesible.

    • openRawResource() requieren un int, no una cadena de developer.android.com/reference/android/content/res/…
    • ¿esto también funciona en los recursos que existen en la carpeta de dibujable?
    • El uso de «R. raw.NameOfResource» como int.
    • Aunque el método requiere un int, yo era capaz de encontrar mi archivo con R. raw.nombre de archivo (sin la extensión)
  7. 3

    getClass().getResourcesAsStream() funciona bien en Android. Sólo asegúrese de que el archivo que está intentando abrir correctamente incrustado en su APK (abrir el APK como ZIP).

    Normalmente en Android que poner los archivos en la assets directorio. Así que si pones el raw_resources.dat en el assets subdirectorio de su proyecto, que va a terminar en la assets directorio en el APK y que se puede utilizar:

    getClass().getResourcesAsStream("/assets/raw_resources.dat");

    También es posible personalizar el proceso de construcción de modo que el archivo no aterriza en el assets directorio en el APK.

Dejar respuesta

Please enter your comment!
Please enter your name here