I have written a simple ui which takes an image (256x256) and maps it to a rectangle.  This works perfectly on the emulator however on the phone the texture does not show, I see only a white rectangle.  This is my code:

     public void onSurfaceCreated(GL10 gl, EGLConfig config)
    {
        byteBuffer = ByteBuffer.allocateDirect(shape.length * 4);
        byteBuffer.order(ByteOrder.nativeOrder());
        vertexBuffer = byteBuffer.asFloatBuffer();
        vertexBuffer.put(cardshape);
        vertexBuffer.position(0);
    
        byteBuffer = ByteBuffer.allocateDirect(shape.length * 4);
        byteBuffer.order(ByteOrder.nativeOrder());
        textureBuffer = byteBuffer.asFloatBuffer();
        textureBuffer.put(textureshape);
        textureBuffer.position(0);
    
        // Set the background color to black ( rgba ).
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
        // Enable Smooth Shading, default not really needed.
        gl.glShadeModel(GL10.GL_SMOOTH);
        // Depth buffer setup.
        gl.glClearDepthf(1.0f);
        // Enables depth testing.
        gl.glEnable(GL10.GL_DEPTH_TEST);
        // The type of depth testing to do.
        gl.glDepthFunc(GL10.GL_LEQUAL);
        // Really nice perspective calculations.
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
    
        gl.glEnable(GL10.GL_TEXTURE_2D);
        loadGLTexture(gl);
    }
    
    public void onDrawFrame(GL10 gl) {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        gl.glDisable(GL10.GL_DEPTH_TEST);
        gl.glMatrixMode(GL10.GL_PROJECTION); // Select Projection
        gl.glPushMatrix(); // Push The Matrix
        gl.glLoadIdentity(); // Reset The Matrix
        gl.glOrthof(0f, 480f, 0f, 800f, -1f, 1f);
        gl.glMatrixMode(GL10.GL_MODELVIEW); // Select Modelview Matrix
        gl.glPushMatrix(); // Push The Matrix
        gl.glLoadIdentity(); // Reset The Matrix
    
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    
        gl.glLoadIdentity();
        gl.glTranslatef(card.x, card.y, 0.0f);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]); //activates texture to be used now
        gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vertexBuffer);
        gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
    
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    }
    
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        // Sets the current view port to the new size.
        gl.glViewport(0, 0, width, height);
        // Select the projection matrix
        gl.glMatrixMode(GL10.GL_PROJECTION);
        // Reset the projection matrix
        gl.glLoadIdentity();
        // Calculate the aspect ratio of the window
        GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,
                100.0f);
        // Select the modelview matrix
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        // Reset the modelview matrix
        gl.glLoadIdentity();
    }
    
    public int[] texture = new int[1];
    
    public void loadGLTexture(GL10 gl) {
        // loading texture
        Bitmap bitmap;
            bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
            // generate one texture pointer
            gl.glGenTextures(0, texture, 0); //adds texture id to texture array
            // ...and bind it to our array
            gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]); //activates texture to be used now
            // create nearest filtered texture
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
            gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
            // Use Android GLUtils to specify a two-dimensional texture image from our bitmap
            GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
            // Clean up
            bitmap.recycle();
    }

As per many other similar issues and resolutions on the web i have tried setting the minsdkversion is 3, loading the bitmap via an input stream bitmap = BitmapFactory.decodeStream(is), setting BitmapFactory.Options.inScaled to false, putting the images in the nodpi folder and putting them in the raw folder.. all of which didn't help.

I'm not really sure what else to try..