我正在尝试将图像插入 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)
根据设计,您没有对内部媒体目录(除您自己的空间之外的内部存储器中的任何空间)的写入权限。如果您检查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
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |