2011-02-11 3 views
3

커서가이 특정 장치에서만 비어있는 이유를 알 수 없습니다. 다른 모든 안드로이드 장치에서 작동합니다. sdcard에는 여러 개의 오디오 파일이 있으며, 주식 mediaplayer는 이러한 노래를 찾아서 정확하게 재생할 수 있습니다.MediaStore의 빈 커서

Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] { "distinct " + MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM_KEY, MediaStore.Audio.Media.ALBUM_ID}, 
       null, 
       null, 
       MediaStore.Audio.Media.ARTIST); 

모두 ambling 책 플레이어 (내가 폴더를 통해 단지 루프들은 추측하고 자신의 ID3 구문 분석을 할 수있어) 및 주식 안드로이드 뮤직 플레이어가 음악을 찾을 나는 미디어 스토어 MediaStore에서 아무것도 얻을 수 없습니다. ".nomedia"파일이 없습니다. 새 폴더에 새 mp3 파일을 삽입하려고했습니다.

답변

2

나는 비슷한 것을 경험했으며 만족스럽지 못한 몇 가지 대답을 발견했습니다.

미디어 스캐너는 부팅 중 발생하는 ACENT_MEDIA_MOUNTED, 브로드 캐스트 시스템에 대한 응답으로 실행됩니다. 따라서 확인해야 할 첫 번째 일은 재부팅입니다.

내가 이해 한대로 스캐너는 설정> 응용 프로그램 관리> 미디어 저장소> 데이터 지우기 -도 실행 한 다음 저장소에서 mediastore를 다시 채 웁니다. 나는 그것을 시도하고 영향을 미치지 않고 작동했다. 물론 안전성을 보증 할 수는 없으며 비 -de 장치에서이 작업을 수행하지 않을 것이다. 의도 ACTION_MEDIA_SCANNER_FINISHED의 방송 보면서

수동

mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse 
     ("file://" + Environment.getExternalStorageDirectory()))); 

통지의 어떤 종류를 넣을 수 있습니다.

미디어를 직접 가져 오는 경우 MediaScannerConnection을 확인하여 스캐너를 강제 종료하십시오.

아, Google의 Nexus와 같은 기기를 사용하려는 경우 INTERNAL_CONTENT_URI을 처리해야합니다.

+0

감사합니다 나는 당신이 귀하의 질문에 대답을 느낀다면 당신은 ... 덕분에 왼쪽에있는 체크 표시를 클릭하면, 내 담당자 도움이 될 것입니다 :) – ingo

+0

잉고 그것을 밖으로 시도 할 것이다! – DJC

+0

죄송합니다. 깜빡 했군 :) – ingo

4

나는 놀라운 HTC에서 동일한 문제를 가지고 있습니다. 슬프게도 DJC의 대답은 저에게 효과적이지 않았습니다. EXTERNAL_CONTENT_URI 및 INTERNAL_CONTENT_URI 모두 내게 이미지를 제공하지 않았습니다. 몇 가지 파고 후 나는 다음 내용의 URI를 사용하여 그것이 HTC Incredible에서 작동하는 것으로 나타났습니다.

Uri contenturi = Images.Media.getContentUri("phoneStorage"); 
+0

고마워. 나는이 질문을 찾고 귀하의 솔루션을 게시하는 데 귀하의 성실한 노력만으로 답변을 뽑았습니다. – ingo