简单的代码,但是游标仍然从内容提供者返回null



使用managedQuery游标的一段简单代码出现问题。由两部分组成,代码的上半部分将一个字符串放入MediaStore数据库内容提供程序的LATITUDE列中。

下面代码的第二部分从数据库中读取相同的字符串。这就是它返回null结果的地方。可能是因为在代码的第一部分中,字符串没有正确地读取到数据库中,或者在从数据库中读取字符串的第二部分中出现错误。

我使用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));

发现并没有像我想象的那样出现错误。这只是一个打字错误。

put方法有"Images.Media.LATITUDE"update方法有"Audio.Media.LATITUDE",将其更改为"Images.Media.LATITUDE",就像在put方法中一样,现在可以工作了。

imageValues.put(MediaStore.Images.Media.LATITUDE, displayName);
getContentResolver().update(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
imageValues, selection3, null);

最新更新