我已经创建了一个webview,并向其中添加了下载监听器。当我在应用程序中下载文件时,它将文件存储在应用程序包中,而不是公共下载文件夹中。
import android.app.DownloadManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import static android.content.Context.DOWNLOAD_SERVICE;
public class home extends Fragment {
private WebView webView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home, container, false);
webView = (WebView) view.findViewById(R.id.testview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDisplayZoomControls(false);
webView.clearCache(true);
// Change to your own forum url
webView.loadUrl("https://example.com");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
view.loadUrl("about:blank");
Toast.makeText(getActivity(), "Error occurred, please check network connectivity", Toast.LENGTH_SHORT).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Loads only your forum domain and no others!
if(url.contains("example") == true) {
view.loadUrl(url);
// If they are not your domain, use browser instead
} else {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
}
return true;
}
});
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimeType,
long contentLength) {
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setMimeType("image/jpeg");
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading file...");
request.setTitle("test.jpg");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalFilesDir(getActivity().getApplicationContext(),
Environment.DIRECTORY_DOWNLOADS,"test.jpg");
DownloadManager dm = (DownloadManager) getActivity().getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getActivity().getApplicationContext(), "Downloading File. Usually takes 5 seconds.",
Toast.LENGTH_LONG).show();
}
});
//returning our layout file
//change R.layout.yourlayoutfilename for each of your fragments
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//you can set the title for your toolbar here for different fragments different titles
getActivity().setTitle("Home");
}
}
尝试下面的代码:
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
这里request.setdestinationinexternalpublicdir
将下载公共目录中的文件,environment.directory_downloads
是目录名。它会把你的文件放在下载文件夹。如果希望下载特定文件夹中的文件,则可以给出目录路径,而不是environment.directory_downloads
我正在尝试下载一个文件到目录,可以根据用户选择的任何目录变化。我将当前目录存储在一个file对象中,现在正在尝试下载该文件。文件下载,但它不下载指定的目录。那么,我可以做什么来获得所选目录中的文件。 传递给文件构造函数的名为url的字符串包含url。只是用它来检索文件名。 更新:我刚找到文件。它在手机里而不是sd卡里。它就在这个文件夹里,存储\仿真\00。不知道为什么?另外,我得到的绝对路径是St
**我使用Flutter下载器包在完成下载一些文件后,我的应用程序会自动关闭并断开与Android Studio的连接。任何人都可以帮我找到溶剂。 以下是我的控制台错误:
如何将progress_dialog包更改为sn_progress-dialog包?我正在尝试制作一个带有进度对话框的文件下载应用程序,但progress_dialog包不是空安全的。 这是我的屏幕截图应用程序,带有progress_dialog包。
控制从远程源的文件下载。 进程: 主进程 DownloadItem(下载项)是一个在Electron中展示下载项的EventEmitter 它被用于 Session类中的 will-download事件,并允许用户控制下载项。 1 //主进程中 2 const {BrowserWindow} = require('electron') 3 let win = new BrowserWindow
我使用下载管理器api下载大文件,我也实现了。但问题是,下载进度通知显示在状态栏中。但是我想用进度条在活动中显示通知。有人做过吗,如果有请帮帮我。
因此,在下载和打开文件之间的某个位置,我需要一个if语句来检查它是应该继续还是等待文件。