我正在创建一个应用程序,启动一个意图,打开系统相机并拍摄一张照片,将其保存到图片目录中。
我是这样做的
private void captureImage(){
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String relativeLocation = Environment.DIRECTORY_PICTURES + File.separator + "MyApp";
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
photoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(captureIntent, REQUEST_CAPTURE_CODE);
}
以上代码在运行android10的设备上运行良好。如果它在运行任何低于android 10(api 29)版本的设备上运行,则getcontentresolver().insert()返回null。
仔细观察,我发现它失败了,错误是“relative\ u path”列不存在。这是因为mediastore.mediacolumns.relative\ u path是在api级别29中添加的吗?如果是这样的话,如何在运行androidpie和androidoreo等旧版本的老设备上做到这一点?
暂无答案!
目前还没有任何答案,快来回答吧!