2010-11-03 2 views
4

Я пытаюсь вставить изображение в телефонную память телефона Android. Я получаю следующие исключения, хотя, когда я пытался с EXTERNAL_CONTENT_URI, проблем не было, но если SD-карты нет, я хочу записать в память телефона.Вставка изображения во внутреннюю память

Может ли кто-нибудь дать мне решение для этого? Заранее спасибо.

#

МОЙ КОД

#
ContentValues values = new ContentValues(2); 

values.put(Media.DISPLAY_NAME, "My Bitmap"); 

values.put(Media.MIME_TYPE, "image/jpeg"); 
Uri uri = getContentResolver().insert(Media.INTERNAL_CONTENT_URI,values); 

//Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,values); 

OutputStream outStream = getContentResolver().openOutputStream(uri); 

b.compress(Bitmap.CompressFormat.JPEG, 50, outStream); 

outStream.close(); 

################################### 
11-03 20:02:48.526: ERROR/DatabaseUtils(167): java.lang.UnsupportedOperationException: Writing to internal storage is not supported. 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at com.android.providers.media.MediaProvider.generateFileName(MediaProvider.java:1646) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at com.android.providers.media.MediaProvider.ensureFile(MediaProvider.java:1337) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1413) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1381) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at android.content.ContentProvider$Transport.insert(ContentProvider.java:150) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:140) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at android.os.Binder.execTransact(Binder.java:287) 
11-03 20:02:48.526: ERROR/DatabaseUtils(167):  at dalvik.system.NativeStart.run(Native Method) 
+0

ли вы нашли решение? –

ответ

0

По дизайну, у вас нет разрешения на запись в каталог внутренней среды (в любое пространство во внутренней памяти по этому вопросу, кроме вашего собственного пространства). Если вы проверите то, что возвращает Media.INTERNAL_CONTENT_URI.getPath(), вы увидите, что это не местоположение в каталоге вашего приложения.

Если вы хотите сохранить растровое изображение во внутренней памяти, используйте следующий код:

String filename = "My Bitmap.jpg"; 
FileOutputStream outputStream; 

try { 
    outputStream = openFileOutput(filename, Context.MODE_PRIVATE); 
    b.compress(Bitmap.CompressFormat.JPEG, 50, outputStream); 
    outputStream.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Подробнее здесь: http://developer.android.com/training/basics/data-storage/files.html

Смежные вопросы