2011-03-29 54 views
6

Quiero guardar la imagen en la carpeta de mi unidad local o en la carpeta res/drawable en mi aplicación. Ahora estoy guardando img en una tarjeta SD, pero tengo que guardarlo en la carpeta res/drawable. Mi código es:guardar la imagen de android en la carpeta res/drawable

String image_URL = "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http%3A%2F%2Fandroid-er.blogspot.com%2F"; 

String extStorageDirectory; 

Bitmap bm; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button buttonSave = (Button) findViewById(R.id.save); 

    ImageView bmImage = (ImageView) findViewById(R.id.image); 
    BitmapFactory.Options bmOptions; 
    bmOptions = new BitmapFactory.Options(); 
    bmOptions.inSampleSize = 1; 
    bm = LoadImage(image_URL, bmOptions); 
    bmImage.setImageBitmap(bm); 


    extStorageDirectory = Environment.getExternalStorageState().toString(); 
    extStorageDirectory = Environment.getExternalStorageDirectory() 
      .toString(); 

    buttonSave.setText("Save to " + extStorageDirectory + "/qr.PNG"); 
    buttonSave.setOnClickListener(buttonSaveOnClickListener); 
} 

private Bitmap LoadImage(String URL, BitmapFactory.Options options) { 
    Bitmap bitmap = null; 
    InputStream in = null; 
    try { 
     in = OpenHttpConnection(URL); 
     bitmap = BitmapFactory.decodeStream(in, null, options); 
     in.close(); 
    } catch (IOException e1) { 
    } 
    return bitmap; 
} 

private InputStream OpenHttpConnection(String strURL) throws IOException { 
    InputStream inputStream = null; 
    URL url = new URL(strURL); 
    URLConnection conn = url.openConnection(); 

    try { 
     HttpURLConnection httpConn = (HttpURLConnection) conn; 
     httpConn.setRequestMethod("GET"); 
     httpConn.connect(); 

     if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
      inputStream = httpConn.getInputStream(); 
     } 
    } catch (Exception ex) { 
    } 
    return inputStream; 
} 

Button.OnClickListener buttonSaveOnClickListener = new Button.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     OutputStream outStream = null; 
     File file = new File(extStorageDirectory, "er.PNG"); 
     try { 
      outStream = new FileOutputStream(file); 
      bm.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
      outStream.flush(); 
      outStream.close(); 

      Toast.makeText(LoadSaveImgActivity.this, "Saved", 
        Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      Toast.makeText(LoadSaveImgActivity.this, e.toString(), 
        Toast.LENGTH_LONG).show(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      Toast.makeText(LoadSaveImgActivity.this, e.toString(), 
        Toast.LENGTH_LONG).show(); 
     } 

    } 

}; 

Respuesta

3

No es posible guardar nada en res/drawable en tiempo de ejecución, lo siento.

+3

en tiempo de ejecución de cource ..! ;) – Mudassir

1

No puede modificar ni res/dibujable ni ninguna otra carpeta de su apk en tiempo de ejecución. Es compilación en tiempo de compilación y nada puede modificarlo desde el interior de la aplicación después.

Cuestiones relacionadas