首先,我的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
保存和获取图像的方法:
private void saveIamgeToLocalStore(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/temp");
myDir.mkdirs();
String fname = "Profile_Image.png";
File file = new File (myDir, fname);
if (file.exists()) file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void loadImageFromLocalStore(String imageURI) {
try {
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().toString() + imageURI);
Bitmap bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(uri));
profileImage.setImageBitmap(bitmap);
profileImage.setTag("Other");
select_image_button.setText(R.string.button_remove_profile_picture);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
用法:
saveIamgeToLocalStore(BitmapFactory.decodeFile(picturePath));
loadImageFromLocalStore("/temp/Profile_Image.png");
我得到了
java.io.FileNotFoundException: No content provider: ...
警告。
我错过了什么?
PS:图像保存在/mnt/sdcard/temp/
中。加载图像时会出现警告。
答案 0 :(得分:2)
您的文件是否已保存?如果是,可能是在您读取文件之前未触发mediascanner。由于未触发mediascanner,因此内容提供商不会有该条目
对于你的文件(你的文件没有编入索引)。如果你的文件是用"saveIamgeToLocalStore"
保存的,那么就像这样从代码中触发mediascanner:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
.parse("file://"
+ Environment.getExternalStorageDirectory())));
然后对文件进行读取。它应该工作。
答案 1 :(得分:0)
您需要编写文件现有检查。然后找到问题会更容易。 简短的例子
File test = new File (URI)
if ( test.exists() )
{
// do your computation
} else
{
// find problem in file path
}