6

배경 : Android 4.4에서 Google은 앱이 not have write access to SD cards이어야한다고 결정했습니다.Android 4.4의 MediaStore에 미디어를 추가하는 방법 Metadata가있는 KitKat SD 카드

그러나 앱은/SDCard/Android/data/App Package Name에 쓸 수 있습니다.

이것이 내가 한 일입니다. 나는/Android/data /에 MP3 파일을 썼다. 그런 다음이 MP3 파일을 Android 뮤직 플레이어에 표시하고 싶습니다. 나는 다음을 시도했습니다

...

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

하고 ....

 
    MediaScannerConnection.scanFile(this, 
      new String[] { file.toString() }, new String[] {"audio/*"}, 
      new MediaScannerConnection.OnScanCompletedListener() { 
     public void onScanCompleted(String path, Uri uri) { 
      Log.i("ExternalStorage", "Scanned " + path + ":"); 
      Log.i("ExternalStorage", "-> uri=" + uri); 
     } 
}); 

및 ...

 
ContentResolver.requestSync(CreateSyncAccount(context), MediaStore.AUTHORITY, null); 

이 두 파일을 추가합니다 content : // media/external/file/xxxxx와 같은 URI를 가진 파일로 MediaStore에 연결

그러나 파일은 오디오로 추가되지 않습니다. 파일을 오디오로 선언하도록 MediaStore를 업데이트 할 수 있지만 파일 메타 데이터는 가져 오지 않습니다.

내 태그 리더를 쓰는 것 외에 어떻게 미디어 스캐너가 파일을 스캔하고 내부 메모리 및 중고 KitKat SD 카드와 같은 메타 데이터를 삽입 할 수 있습니까?

+0

[이] (http://stackoverflow.com/questions/6108243/contentresolver-in-android-2-2-issue)와 같은 것을 시도해 보셨나요? ACTION_MEDIA_SCANNER_SCAN_FILE이 도움이 될 것이라고 생각합니다. 그렇지 않다면 MediaStore.Audio 용 ContentProvider를 가져 와서 새로운 requestSync 메서드를 호출 할 수 있습니다. 그냥 내 생각, 나는이 중 하나를 시도하지 않았습니다. – Tom

+0

코멘트 주셔서 감사합니다. 이러한 솔루션은 없습니다. 문제는 안드로이드가 SD 카드에서와 마찬가지로 메타 데이터를 채우게하는 것입니다. 조금 더 명확하게하기 위해 질문을 업데이트했습니다. – Justin

+0

"/ SDCard/Android/data/App Package Name"은 다른 비 수퍼 유저 앱 앱이 다른 Android 뮤직 플레이어에서 읽을 수없는 앱 개인 폴더이므로 media-db에 있더라도 mp3를 재생할 수 없습니다 . 4.4 이전의 android에서는 다른 앱이 일부 개인 폴더에서 읽도록 허용 할 수있었습니다. 그러나 이것은 android-4.4 이상에서 더 이상 작동하지 않습니다. – k3b

답변

6

저는 해결책을 찾기를 포기했습니다. 나는 하나가 있다고 생각하지 않는다. 그래서 나는 issue report을 제출했다.

관련 문제