这里有一个使用 managedQuery 游标的简单代码部分的问题。两部分,代码的上半部分将一个字符串放入 MediaStore 数据库内容提供程序的 LATITUDE 列。
下面代码的第二部分从数据库中读取相同的字符串。这是它返回空结果的地方。要么是因为在代码的第一部分中字符串没有正确读入数据库,要么是在第二部分从数据库中读回字符串时出错。
我正在使用 Media.images 内容提供程序的 LATITUDE 列来存储一个字符串。没有其他可用的未使用列,这就是我使用它的原因。目标是将 mp3 文件的字符串路径名放入图像的 LATITUDE 列中,稍后通过另一个查询再次将其读回。
我将问题追溯到以下代码。第二部分代码中的游标返回 null。我使用游标有什么问题,或者我不知道有什么错误吗?
String displayName; // string pathname of the mp3 file to be put into LATITUDE column
String filename; // the pathname of the image that I want to add the database info to
ContentValues imageValues = new ContentValues();
String selection3 = MediaStore.Images.Media.DATA + "='" + filename +"'";
imageValues.put(MediaStore.Images.Media.LATITUDE, displayName);
getContentResolver().update(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
imageValues, selection3, null);
String[] proj6 = { MediaStore.Images.Media.LATITUDE };
String selection6 = MediaStore.Images.Media.DATA + "='" + filename +"'";
Cursor cursor2 = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
proj6, selection6, null, null);
cursor2.moveToFirst();
String displayer = (String)
cursor2.getString(cursor2.getColumnIndex(MediaStore.Images.Media.LATITUDE));