java - 为什么我的SQL数据库无法在Android中使用?

标签 java android sql error-handling

在我的应用程序中,单击图像按钮将您带到图库。单击图像后,我想调用onActivityResult来存储图像路径,但是它不起作用。在我的LogCat中,它总是告诉我在尝试保存图像路径时崩溃。

我的onActivityResult方法:

mImageRowId = savedInstanceState != null ? savedInstanceState.getLong(ImageAdapter.KEY_ROWID) : null;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if(requestCode == PICK_FROM_FILE && data != null && data.getData() != null) {
    Uri uri = data.getData();

    if(uri != null) {
      Cursor cursor = getContentResolver().query(uri, new String[] {
        android.provider.MediaStore.Images.ImageColumns.DATA
      }, null, null, null);
      cursor.moveToFirst();
      String image = cursor.getString(0);
      cursor.close();

      if(image != null) {
      // HERE IS WHERE I WANT TO SAVE THE IMAGE. HERE MUST BE THE ERROR!
        if (mImageRowId == null) {
          long id = mImageHelper.createImage(image);

          if (id > 0) {
            mImageRowId = id;
          }
        }

        // Set the image and display it in the edit activity
        Bitmap bitmap = BitmapFactory.decodeFile(image);
        mImageButton.setImageBitmap(bitmap);
      }
    }
  }
}

这是我的onSaveInstanceState方法:
private static final Long DEF_ROW_ID = 0L;
  @Override
  protected void onSaveInstanceState(Bundle outState) {
    outState.putLong(ImageAdapter.KEY_ROWID, mImageRowId != null ? mImageRowId : DEF_ROW_ID);
    super.onSaveInstanceState(outState);
}

这是我的DbAdapter的一部分:
public long createImage(String image) {
  ContentValues cv = new ContentValues();
  cv.put(KEY_IMAGE, image);
  return mImageDb.insert(DATABASE_TABLE, null, cv);
}

你能找到问题吗?

最佳答案

您的mImageHelper是什么?

否则,您尝试使用包含android.provider.MediaStore.Images.ImageColumns.DATA的变量图像创建位图。但是此列不是文件路径:)

对在onActivityresult(data.getData)中收到的数据对象进行查询,以检索列MediaStore.Images.Media.DATA。

您应该从路径创建图像。

祝好运。

关于java - 为什么我的SQL数据库无法在Android中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837596/

相关文章:

java - 显示链表中的所有节点

Mysql:合并来自同一个表的选择查询

sql - Netezza 聚合问题(枢轴)

java - 用 Spock 模拟 "blocking"方法调用?

java - 如果一个单词有 5 个字母,则每行打印一个字母,如果没有,则只打印该单词?

java - 如何在android中获取具有不同id的url(异步任务)

android - 使用 Android 的 MediaCodec 和 MediaMuxer 混合 AAC 音频

android - 使用 jack 时,Lambda 表达式因 Android 中的 IncompatibleClassChangeError 而崩溃

android - startActivityForResult 和 FLAG_ACTIVITY_CLEAR_TOP

c# - SQL Server (2008) 将 ArrayList 或字符串传递给 SP 以进行 IN()