2014-01-17 4 views
0

У меня есть код для сохранения изображения во внешнем хранилище, но я хочу сохранить изображение во внутреннем хранилище устройства, потому что на многих устройствах нет внешнего хранилища или SDCard. Эти устройства не могут сохранять изображения.Сохранение изображений в устройстве android

InputStream y11 = getResources().openRawResource(to); 
Bitmap b11 = BitmapFactory.decodeStream(y11); 
File direct = new File(Environment.getExternalStorageDirectory() 
     .toString() + "/newimages"); 

direct.mkdirs(); 

String fName = "Image-" + String.valueOf(System.currentTimeMillis())+ ".jpg"; 
File file = new File(direct, fName); 
if (file.exists()) 
    file.delete(); 
try { 

FileOutputStream out = new FileOutputStream(file); 

b11.compress(Bitmap.CompressFormat.JPEG, 100, out); 

out.flush(); 
// out.close(); 
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
Uri.parse("file://"+Environment.getExternalStorageDirectory()))); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
} 
+1

StackOverflow для вопросов программирования. Какой у Вас вопрос? – CommonsWare

+0

Это только мой вопрос программирования. Этот код помогает мне сохранять изображение только в SDCard. Но что, если доза устройства не имеет SDCard? Этот код для этого не работает. Так в чем же решение? – 9477

+0

«Этот код помогает мне сохранить изображение только в SDCard» - нет, он сохраняет изображение на внешнем хранилище. Внешнее хранилище не является «sdCard». «Но что, если доза устройства не имеет SDCard?» - почти все устройства Android имеют внешнее хранилище. При этом вы можете сохранить изображение во внутреннем хранилище, используя 'getFilesDir()'. – CommonsWare

ответ

2

Вы можете использовать этот код, чтобы проверить, если SD-CARD существует:

Boolean haveSd= android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 

if(haveSd) 
{ 
    // Work on device-sd 
} 
else 
{ 
    //Work on device 
} 

И если вы хотите сохранить во внутренней памяти:

public boolean saveImageToInternalStorage(Bitmap image) { 

    try { 
    // Use the compress method on the Bitmap object to write image to 
    // the OutputStream 
    FileOutputStream fos = context.openFileOutput("desiredFilename.png", Context.MODE_PRIVATE); 

    // Writing the bitmap to the output stream 
    image.compress(Bitmap.CompressFormat.PNG, 100, fos); 
    fos.close(); 

    return true; 
    } catch (Exception e) { 
    Log.e("saveToInternalStorage()", e.getMessage()); 
    return false; 
    } 
} 
Смежные вопросы