ich ein Lied aus der Bibliothek des Benutzers wie folgt aus:Kopieren von Audio von uri zu bestimmten Verzeichnis
Intent selectIntent = new Intent(Intent.ACTION_GET_CONTENT);
selectIntent.setType("audio/*");
startActivityForResult(selectIntent, SONG_REQUEST_CODE);
und abrufen es wie folgt aus:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SONG_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
if ((data != null) && (data.getData()!=null)) {
song = data.getData(); //song is an Uri defined previuosly
}
}
}
ich es in einen Ordner ich importieren müssen definiert und erstellt wie folgt aus:
final File dir2 = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Chords/Imported Audio");
dir2.mkdirs();
ich so versucht wie Commonsware vorgeschlagen, aber die Datei nicht erstellt wird:
private void importAudio(Uri uri) {
String source = uri.getPath();
String destinationFile = dir2 + File.separator + songName;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(source));
bos = new BufferedOutputStream(new FileOutputStream(destinationFile, false));
byte[] buf = new byte[1024];
bis.read(buf);
do {
bos.write(buf);
} while (bis.read(buf) != -1);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bis != null) bis.close();
if (bos != null) bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Die Datei ist jedoch nicht da. Wie kann ich das beheben?
Danke für die Antwort, ich werde tun, um diese mit 'Input '. Nur aus Neugier, was ist die 'getPath()' Methode im 'Uri' Objekt eigentlich nützlich? Basierend auf den anderen Fragen hier auf SO, scheint es mir, da es eine wirklich verwirrende Methode ist und ich immer noch nicht herausfinden kann, wie und wann ich es benutzen soll. Danke auch für den Indixing-Tipp wird es nützlich sein und ich wusste es nicht – Daniele
@Daniele: "Nur aus Neugier, was ist die Methode getPath() im Uri-Objekt eigentlich nützlich?" - Wenn das Schema "Datei" ist, ist es ein Dateisystempfad. Wenn das Schema etwas anderes ist, ist es eine Reihe von Zeichen, deren Bedeutung für Sie undurchsichtig ist. Zum Beispiel ist "https: // stackoverflow.com/questions/46241361/android-copy-audio-from-uri-to-specific-directory/46241452" ein 'Uri'. Sein Schema ist "https". Der Pfad ist '/ questions/46241361/android-copy-audio-from-uri-to-specific-directory/46241452', und das ist nur eine Reihe von Zeichen, die keine Bedeutung für Ihre App hat. – CommonsWare
oh ich sehe, danke für die Klarstellung – Daniele