배경 : 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 카드와 같은 메타 데이터를 삽입 할 수 있습니까?
[이] (http://stackoverflow.com/questions/6108243/contentresolver-in-android-2-2-issue)와 같은 것을 시도해 보셨나요? ACTION_MEDIA_SCANNER_SCAN_FILE이 도움이 될 것이라고 생각합니다. 그렇지 않다면 MediaStore.Audio 용 ContentProvider를 가져 와서 새로운 requestSync 메서드를 호출 할 수 있습니다. 그냥 내 생각, 나는이 중 하나를 시도하지 않았습니다. – Tom
코멘트 주셔서 감사합니다. 이러한 솔루션은 없습니다. 문제는 안드로이드가 SD 카드에서와 마찬가지로 메타 데이터를 채우게하는 것입니다. 조금 더 명확하게하기 위해 질문을 업데이트했습니다. – Justin
"/ SDCard/Android/data/App Package Name"은 다른 비 수퍼 유저 앱 앱이 다른 Android 뮤직 플레이어에서 읽을 수없는 앱 개인 폴더이므로 media-db에 있더라도 mp3를 재생할 수 없습니다 . 4.4 이전의 android에서는 다른 앱이 일부 개인 폴더에서 읽도록 허용 할 수있었습니다. 그러나 이것은 android-4.4 이상에서 더 이상 작동하지 않습니다. – k3b