gpt4 book ai didi

android - 无法解码流 : FileNotFoundException

转载 作者:行者123 更新时间:2023-12-05 00:07:30 27 4
gpt4 key购买 nike

在我的数据库中,我的手机上的每个条目都有一个图片的 uri。为了在手机上显示它,Listview 有一个 CustomAdapter。现在,我想在 ListView 中显示图片,得到如下错误信息:

05-13 12:20:34.234: E/BitmapFactory(17684): Unable to decode stream: java.io.FileNotFoundException: /external/images/media/10139: open failed: ENOENT (No such file or directory)
BitmapDrawable: cannot decode external/images/media/10139

它发生在这个函数中:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderEreignis holder;

if(convertView == null){
convertView = inflator.inflate(R.layout.list_ereignis, parent, false);
holder = new ViewHolderEreignis((TextView) convertView.findViewById(R.id.enullline), (TextView) convertView.findViewById(R.id.efirstLine), (ImageView) convertView.findViewById(R.id.eimgv));

convertView.setTag(holder);
}
else{
holder = (ViewHolderEreignis) convertView.getTag();
}

Ereignis ki = (Ereignis) getItem(position);
holder.getEreignisname().setText(ki.getEreignisname());
holder.getEreignisdatum().setText(ki.getEreignisZeit());
Uri uri = Uri.parse(ki.getEreignisbild());
BitmapDrawable b = new BitmapDrawable(ki.getEreignisbild());

System.out.println("ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ" + uri.getPath());
holder.getEreignisbild().setImageDrawable(b);

return convertView;

}

如您所见,我输出了如下所示的图像的 URI:

external/images/media/10139

有人知道这个错误吗?

编辑:这是我添加图像的代码:

    ContentValues values = new ContentValues();
String TITLE = null;
values.put(MediaStore.Images.Media.TITLE, TITLE);
String DESCRIPTION = null;
values.put(MediaStore.Images.Media.DESCRIPTION, DESCRIPTION);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
System.out.println("VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVvv" + imageUri.getPath());
startActivityForResult(intent, IMAGE_CAPTURE);

编辑 2:

这是我如何将链接添加到数据库的代码:

public void insertereignis(String ename, String ezeit, String egenaueres, String ebild, int kindid){
long rowId = -1;
try{
SQLiteDatabase db = getWritableDatabase();


ContentValues cv = new ContentValues();
System.out.println(ename + ezeit + egenaueres);
cv.put(EREIGNISNAME, ename);
cv.put(EREIGNISZEIT, ezeit);
cv.put(EREIGNISGENAUERES, egenaueres);
cv.put(EREIGNISBILD, ebild);
System.out.println("GRIAISDALSDJLASJDLKASJDKLAJSDLKJFS" + ebild);
cv.put(KINDID, kindid);

rowId = db.insert(TABLE_NAME_EREIGNIS, null, cv);
}
catch (SQLiteException e){
Log.e(TAG, "insert() Ereignis", e);
}
finally{
Log.d(TAG, "insert(): Ereignis rowId=" + rowId);
}
}

ebild的值为/external/images/media/10146

最佳答案

你没看到问题吗?您有很多解决方案。

  1. ebild 更改为格式为 /DCIM/Camera/filename.jpg 的值,然后像这样使用 imgeUri:

    imageUri = Environment.getExternalStorageDirectory().getAbsolutePath() + uri.toString();
  2. ebild 更改为 filename.jpg 格式的值,然后像这样使用 imgeUri:

    imageUri = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/" + uri.toString();
  3. 将整个图像路径分配给 ebild,例如:

    ebild = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/" + "filename.jpg"

    然后不做任何修改直接作为图片uri使用。

我不知道还能说什么。解决方案显而易见。

编辑:

以下是如何将文件名设置为时间戳:

Calendar c = Calendar.getInstance();
String cameraImageFileName = "IMG_" + c.get(Calendar.YEAR) + "-" +
((c.get(Calendar.MONTH)+1 < 10) ? ("0" + (c.get(Calendar.MONTH)+1)) : (c.get(Calendar.MONTH)+1)) + "-" +
((c.get(Calendar.DAY_OF_MONTH) < 10) ? ("0" + c.get(Calendar.DAY_OF_MONTH)) : c.get(Calendar.DAY_OF_MONTH)) + "_" +
((c.get(Calendar.HOUR_OF_DAY) < 10) ? ("0" + c.get(Calendar.HOUR_OF_DAY)) : c.get(Calendar.HOUR_OF_DAY)) + "-" +
((c.get(Calendar.MINUTE) < 10) ? ("0" + c.get(Calendar.MINUTE)) : c.get(Calendar.MINUTE)) + "-" +
((c.get(Calendar.SECOND) < 10) ? ("0" + c.get(Calendar.SECOND)) : c.get(Calendar.SECOND)) + ".jpg";

您将获得格式为 IMG_YYYY-MM-DD_HH-MM-SS.jpg

的文件名

您的 imageUri 将是:

imageUri = Environment.getExternalStorageDirectory().getAbsolutePath() + cameraImageFileName;

并且您应该将其作为 ebild 添加到您的数据库中:

insertereignis(ename, ezeit, egenaueres, imageUri, kindid);

关于android - 无法解码流 : FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16519821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com