将图像插入内存

Pan*_*kaj 5 android

我正在尝试将图像插入 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)
Run Code Online (Sandbox Code Playgroud)

Ε Г*_*И О 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();
}  
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多信息:http ://developer.android.com/training/basics/data-storage/files.html