0

这里有一个使用 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));
4

1 回答 1

0

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

put 方法有“Images.Media.LATITUDE”,更新方法有“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);
于 2012-12-18T00:56:12.170 回答