6

Hintergrund: In Android 4.4, entschied Google, dass Apps .Hinzufügen von Medien zu MediaStore auf Android 4.4 KitKat SD-Karte mit Metadaten

Allerdings können Apps unter/SDCard/Android/data/App-Paketname schreiben.

Also das ist was ich getan habe. Ich habe eine MP3-Datei nach/Android/data/geschrieben. Ich möchte, dass diese MP3-Datei in Android-Musikplayern angezeigt wird.

ich folgendes versucht haben ...

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

und ....

 
    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); 
     } 
}); 

und ...

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

beide diese die Datei hinzufügen an den MediaStore als Datei mit einem URI-ähnlichen Inhalt: // media/external/file/xxxxx

Die Datei wird jedoch nicht als Audio hinzugefügt. Ich kann den MediaStore aktualisieren, um die Datei als Audio zu deklarieren, aber die Metadaten der Datei werden nicht importiert.

Abgesehen davon, dass ich meinen eigenen Tag-Reader schreibe, wie kann ich den Medienscanner dazu bringen, die Datei zu scannen und Metadaten wie im internen Speicher und Pre-KitKat SD-Karten einzufügen?

+0

Haben Sie etwas versucht wie [dies] (http://stackoverflow.com/questions/6108243/contentresolver-in-android-2-2-issue)? Ich würde denken, ACTION_MEDIA_SCANNER_SCAN_FILE könnte helfen, und wenn nicht, könnten Sie einen ContentProvider für MediaStore.Audio abrufen und die neue requestSync-Methode darauf aufrufen. Nur meine Gedanken, ich habe beides nicht versucht. – Tom

+0

Danke für den Kommentar. Keine dieser Lösungen funktioniert. Das Problem besteht darin, dass Android die Metadaten wie auf der SD-Karte auffüllt. Die Frage etwas überarbeitet, um das klarer zu machen. – Justin

+0

Da "/ SDCard/Android/data/Name des App-Pakets" der private Ordner Ihrer Apps ist, die andere Nicht-Superuser-Apps von anderen Android-Musikplayern nicht lesen dürfen, können Sie Ihr mp3 nicht abspielen, auch wenn sie sich in der Media-db befinden . In Android vor 4.4 war es möglich, dass andere Apps aus einem privaten Ordner lesen konnten. aber das funktioniert nicht in android-4.4 und später mehr. – k3b

Antwort

6

Ich habe aufgegeben, nach einer Lösung zu suchen. Ich glaube nicht, dass es einen gibt, also habe ich einen issue report eingereicht.