Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DatabaseUtils cursorRowToContentValues将blob转换为字符串_Android_Cursor_Blob_Android Cursor - Fatal编程技术网

Android DatabaseUtils cursorRowToContentValues将blob转换为字符串

Android DatabaseUtils cursorRowToContentValues将blob转换为字符串,android,cursor,blob,android-cursor,Android,Cursor,Blob,Android Cursor,我刚刚偶然发现Android的DatabaseUtils.cursorRowToContentValues方法有一个问题。 在游标中,blob正确地存储为字节数组cursor.getBlob()也返回正确的值。 但是,在使用utils方法对其进行转换后,ContentValues包含一个字符串,调用getAsByteArray返回null,因为没有包含该键的字节数组 我找不到任何关于此的错误报告,但我认为这不是故意的 光标是一个自填矩阵运算器 这就是问题所在 以下是代码: 没有AbstractW

我刚刚偶然发现Android的
DatabaseUtils.cursorRowToContentValues
方法有一个问题。 在游标中,blob正确地存储为字节数组
cursor.getBlob()也返回正确的值。
但是,在使用utils方法对其进行转换后,
ContentValues
包含一个字符串,调用
getAsByteArray
返回null,因为没有包含该键的字节数组

我找不到任何关于此的错误报告,但我认为这不是故意的


光标是一个自填矩阵运算器

这就是问题所在

以下是代码:

没有
AbstractWindowedCursor


总的来说,
DatabaseUtils
只是为了方便起见。如果他们为你工作,很好。如果它们对您不起作用,那么您必须使用自己的util方法。

您有一些代码来演示这个问题吗?只要数据实际上是blob并且光标是
AbstractWindowedCursor
,该方法就支持blob。光标是一个自填充矩阵。我会在周一为它写一个测试。好的,这就解释了。我将在回答中展开它。是的,我刚刚查看了数据库的源代码。我想知道他们为什么这样做。它至少应该写在文档中!同意Android sqlite文档在某些地方不是很好。使用源代码,不要只信任文档。
710    public static void cursorRowToContentValues(Cursor cursor, ContentValues values) {
711        AbstractWindowedCursor awc =
712                (cursor instanceof AbstractWindowedCursor) ? (AbstractWindowedCursor) cursor : null;
713
714        String[] columns = cursor.getColumnNames();
715        int length = columns.length;
716        for (int i = 0; i < length; i++) {
717            if (awc != null && awc.isBlob(i)) {
718                values.put(columns[i], cursor.getBlob(i));
719            } else {
720                values.put(columns[i], cursor.getString(i));
721            }
722        }
723    }
java.lang.Object
   ↳    android.database.AbstractCursor
       ↳    android.database.MatrixCursor