当我尝试在Android API Level 18上使用ContentResolver插入文件后立即打开文件时,会抛出异常FileNotFoundException。
如果我尝试在API级别17上运行相同的代码,它可以正常工作。
String fileName = DateFormat.format("yyyyMMdd_hhmmss", new Date()).toString();
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, fileName);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
ContentResolver contentResolver = getContentResolver();
Uri uri = contentResolver.insert(Media.EXTERNAL_CONTENT_URI, values);
OutputStream outstream;
try {
outstream = contentResolver.openOutputStream(uri);
image.compress(Bitmap.CompressFormat.JPEG, 90, outstream);
outstream.close();
return uri;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我尝试使用Images.Media.insertImage(),但它也没有用。查看此方法的源代码,我意识到代码看起来很像我的。
答案 0 :(得分:1)
不幸的是,使用ContentResolver无法按预期工作。所以我决定使用其他方法。
try {
String fileName = DateFormat.format("yyyyMMdd_hhmmss", new Date()).toString();
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
dir.mkdirs();
File file = new File(dir, fileName + ".jpg");
OutputStream out = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.close();
MediaScannerConnection.scanFile(this,
new String[] { file.toString() },
null,
null);
} catch (IOException e) {
e.printStackTrace();
}