我正在编写Android应用,并试图将位图保存到外部存储中。 我的代码如下。
ContentValues contents = new ContentValues();
String curTime = AppSetting.currentDateString();
contents.put("title", curTime);
contents.put("display_name", curTime);
contents.put("description", curTime);
contents.put("datetaken", Long.valueOf(System.currentTimeMillis()));
contents.put("mime_type", "image/jpeg");
String path = Environment.getExternalStorageDirectory().toString() + "/dcim/camera";
String hashPath = String.valueOf(path.hashCode());
String displayName = (new File(path)).getName().toLowerCase();
contents.put("bucket_id", hashPath);
contents.put("bucket_display_name", displayName);
Uri uri = this.getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, contents);//this is always null!!!
BufferedOutputStream oStream = new BufferedOutputStream(this.getContentResolver().openOutputStream(uri));
bmp.compress(CompressFormat.JPEG, 100, oStream);
oStream.close();
但是uri总是空的。 在进行一些研究时,我发现这些消息来源是因为活动被破坏和重建。为了解决这个问题,我将上面的代码添加到Activity的OnCreate()中,但我仍然得到相同的结果 我测试了几个Android设备,但uri总是为空。 有什么建议吗?
答案 0 :(得分:2)
我发现了我的问题 我用下面的宏替换了显示名称并且它有效。
MediaStore.Images.ImageColumns.DISPLAY_NAME
结果我发现这不是“display_name”,它有下划线前缀:“_ display_name”。
希望这可以帮助。