2011-03-28 8 views
0

デフォルトのコンテンツプロバイダMediaStore.AudioからCursorにいくつかのパラメータをロードしようとしていますが、コードをデバッグするときにはmanagedQueryだけで実行が停止します。このメソッドは、managedQuery以外の方法では実行できません。私は、このメソッドは廃止され、使用すべきではありませんが、私が使用しているAPIレベルで私が持っている唯一のオプションであるドキュメントで読んだMediaStore.Audioプロバイダからの情報でAndroidにカーソルをロード

Uri exAudioUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

String[] projection = new String[] { 
    MediaStore.Audio.Media._ID, 
    MediaStore.Audio.Media.DISPLAY_NAME, 
    MediaStore.Audio.Media.DATA, 
    MediaStore.Audio.Media._COUNT, 
}; 
Cursor cExAudio = managedQuery(exAudioUri, projection, null, null, MediaStore.Audio.Media.DISPLAY_NAME + " DESC"); 

:ここでは、クエリとのコードです。

+1

あなたはそれがmanagedQueryがnullを返しているかどうかを返す確認することができます。 –

+0

デバッグ中にmanagedQueryが次の例外を返します:android.database.sqlite.SQLiteException:列がありません:_count:コンパイル中:SELECT _id、_display_name、_data、_countオーディオからORDER BY _display_name DESC – user673847

答えて

0

MediaStore.Audio.Media._COUNTString[] projectionから削除すると問題が解決するはずです。

は、基本的には「_COUNT」と呼ばれる何列が存在しない

String[] projection = new String[] { 
    MediaStore.Audio.Media._ID, 
    MediaStore.Audio.Media.DISPLAY_NAME, 
    MediaStore.Audio.Media.DATA 
}; 
+0

ありがとう、解決済み:) – user673847

関連する問題