2010-11-03 137 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

你有沒有找到解決辦法? – 2015-01-13 15:21:25

回答

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

相關問題