2013-07-11 2 views
0

Так что я делаю, это получение данных как намерение из другого приложения. Я получаю изображение, чем пытаться сохранить егоСохранить изображение Uri as image

void savefile(Uri sourceuri) 
{ 
    String sourceFilename= sourceuri.getPath(); 
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "PhotoSaver"); 


    BufferedInputStream bis = null; 
    BufferedOutputStream bos = null; 

    try { 
     bis = new BufferedInputStream(new FileInputStream(sourceFilename)); 
     bos = new BufferedOutputStream(new FileOutputStream(mediaStorageDir, false)); 
     byte[] buf = new byte[1024]; 
     bis.read(buf); 
     do { 
      bos.write(buf); 
     } while(bis.read(buf) != -1); 
    } catch (IOException e) { 

    } finally { 
     try { 
      if (bis != null) bis.close(); 
      if (bos != null) bos.close(); 
     } catch (IOException e) { 

     } 
    } 

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "PhotoSaver")))); 

} 
+0

Ваш вопрос непонятен. Что именно вы спрашиваете? – veritas

+0

Я хочу, чтобы сохранить Uri как изображение в моей галерее –

ответ

1

Вы должны читать, пока вы дойдете до конца вашего входного потока и, наконец, потопить свой выходной поток. Что-то вроде этого:

 // the file is read to the end 
    while ((value = bis.read()) != -1) { 
     bos.write(value); 
    } 

    // invokes flush to force bytes to be written out to baos 
    bos.flush();