#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. в чем проблема? Пожалуйста, убедитесь, что у вас есть доступ к хранилищу и папка доступна в музыкальном каталоге.