ここで、managedQuery カーソルを使用するコードの単純なセクションで問題が発生しました。コードの上半分は、MediaStore データベース コンテンツ プロバイダーの LATITUDE 列に文字列を挿入します。
以下のコードの 2 番目の部分は、データベースから同じ文字列を読み取ります。これは、null の結果を返す場所です。コードの最初の部分で文字列がデータベースに正しく読み取られなかったか、データベースから文字列を読み取る 2 番目の部分にエラーがあるためです。
Media.images コンテンツ プロバイダーの LATITUDE 列を使用して文字列を格納しています。使用可能な他の未使用の列がないため、使用しています。目標は、mp3 ファイルの文字列パス名を画像の LATITUDE 列に入れ、後で別のクエリで再度読み取ることです。
問題を次のコードまで追跡しました。コードの 2 番目の部分のカーソルが 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));