@newdancer

Как загрузить mp3 файл по прямой ссылке в телефон?

Как загрузить 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);

что не так в коде?
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 2
Smithson
@Smithson
20+ лет админю
app_

в начале пути наводит на мысль, что грузите вы в каталог программы (есть у андроида такая мода), скорее всего это /storage/emulated/0/Android/data/имя.вашего.приложения
Там внутри есть каталоги storage/emulated/0/ ? :)
Если же желаете писать в корень флешки, то вам нужен другой контекст, скорее всего (точно не помню) MODE_WORLD_WRITEABLE
Ответ написан
Комментировать
@Scotik
Junior Android Developer
java.lang.IllegalArgumentException: File app_/storage/emulated/0/Download contains a path separator

эм как я понял ошибка в том что путь к директории должен заканчиватся на "/"
directory = getActivity().getDir(filePath + File.Separator, Context.MODE_PRIVATE);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы