Я пытаюсь загрузить аудио с помощью DownloadManager в Android Studio, но он загружает неизвестный файл

#android #android-download-manager

Вопрос:

У меня есть ссылка. Если я загружу эту ссылку напрямую с помощью DownloadManager, она отправит обратно неизвестный файл.
Но когда я запускаю эту ссылку в Интернете, она показывает загрузку в формате mp3. запуск этой ссылки в Интернете
Я хочу загрузить аудио напрямую, не запуская его в WebView.

Спасибо за вашу помощь!

Комментарии:

1. Это похоже на потоковый файл. Что вам нужно сделать, так это найти потоковый загрузчик в Android.

Ответ №1:

попробуйте это

Добавьте нижеприведенную библиотеку…

 implementation 'com.github.esafirm:rxdownloader:2.0.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implementation 'io.reactivex.rxjava2:rxjava:2.2.10'  

Теперь вызовите функцию ниже

 public static void download(Context context, String url, String name){  RxDownloader rxDownloader = new RxDownloader(context);   Uri uri = Uri.parse(url); // Path where you want to download file.  DownloadManager.Request request = new DownloadManager.Request(uri);  request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI); // Tell on which network you want to download file.  request.setTitle(name   ""); // Title for notification.  request.setVisibleInDownloadsUi(true);  request.allowScanningByMediaScanner();  request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); // This will show notification on top when downloading the file.   File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) "/" YOUR_FOLDER_NAME)  if(!file.exists()) file.mkdris(); //make sure you have storage permission    request.setDestinationInExternalPublicDir(DIRECTORY_MUSIC, YOUR_FOLDER_NAME   "/"   name);   //rxDownloader.download(request).subscribeOn(AndroidSchedulers.mainThread()).subscribe(new CoreMySave1(Core.this, this, file2.getAbsolutePath(), isOnlyAudio));  rxDownloader.download(request).subscribeOn(AndroidSchedulers.mainThread()).subscribe(new Observerlt;Stringgt;() {  @Override  public void onSubscribe(@NonNull Disposable d) {  Log.d("====", "onSubscribe");   }   @Override  public void onNext(@NonNull String s) {   }   @Override  public void onError(@NonNull Throwable e) {  e.printStackTrace();  Log.d("====", "onError :: "   e.getMessage());   }   @Override  public void onComplete() {  Log.d("====", "onComplete");   }  }); }  

Комментарии:

1. спасибо за вашу помощь, но это не работает 🙁

2. в чем проблема? Пожалуйста, убедитесь, что у вас есть доступ к хранилищу и папка доступна в музыкальном каталоге.