Как загрузить mp3 файл по прямой ссылке в телефон?
в передаю AsyncTask прямую ссылку на скачивание mp3 файла
new GetSoundTask().execute(linkPath);
сам AsyncTask выглядит так
private class GetSoundTask extends AsyncTask<String, Integer, String>
{
protected void onPreExecute()
{
progressDownload.setProgress(0);
}
protected String doInBackground(String... urls)
{
String filename = "android.mp3";
directory = getActivity().getDir(filePath, Context.MODE_PRIVATE);
try {
File myFile = new File(directory, filename);
URL url = new URL(urls[0]);
URLConnection connection = url.openConnection();
connection.connect();
int fileSize = connection.getContentLength();
InputStream is = new BufferedInputStream(url.openStream());
OutputStream os = new FileOutputStream(myFile);
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = is.read(data)) != -1)
{
total += count;
publishProgress((int) (total * 100 / fileSize));
os.write(data, 0, count);
}
os.flush();
os.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return filename;
}
protected void onProgressUpdate(Integer... progress)
{
textProgress.setText(String.valueOf(progress[0]) + "%");
progressDownload.setProgress(progress[0]);
}
protected void onCancelled()
{
Toast.makeText(context, "Error connecting to Server", Toast.LENGTH_LONG).show();
}
protected void onPostExecute(String filename)
{
progressDownload.setProgress(100);
mInfoTextView.setText("Загрузка завершена...");
File myFile = new File(directory, filename);
onDismiss(getDialog());
}
}
В файл filePath передаю путь к папке куда надо загрузить.
Приложение завершается с ошибкой
java.lang.IllegalArgumentException: File app_/storage/emulated/0/Download contains a path separator
в строке
directory = getActivity().getDir(filePath, Context.MODE_PRIVATE);
что не так в коде?