下载文件时,会在通知或某处显示下载进度。 但我认为它不是默认的cn1应用程序。我想添加进度监听器。如何使它工作?
if (!FileSystemStorage.getInstance().exists(filename)) {
com.codename1.io.Util.downloadUrlToFile(PdfUrl, filename, true);
}
答案 0 :(得分:1)
在我的案例中使用了以下代码。
/**
* Adaptation of Util.downloadUrlTo
*/
private boolean downloadUrlToAdapt(String url, final String fileName, boolean storage, final Slider slider) {
final ConnectionRequest cr = new ConnectionRequest();
cr.setPost(false);
cr.setFailSilently(true);
cr.setUrl(url);
if (storage) {
cr.setDestinationStorage(fileName);
} else {
cr.setDestinationFile(fileName);
}
NetworkManager.getInstance().addProgressListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (evt instanceof NetworkEvent) {
NetworkEvent e = (NetworkEvent) evt;
if (e.getProgressPercentage() >= 0) {
slider.setText(e.getProgressPercentage() + "%");
slider.setProgress(e.getProgressPercentage());
}
}
}
});
NetworkManager.getInstance().addToQueueAndWait(cr);
return cr.getResponseCode() == 200;
}
我需要显示视频下载进度。我希望它有所帮助。
答案 1 :(得分:0)
浏览器在本地下载文件的方式是浏览器的特殊情况,与应用程序无关。你只需用一个文件调用Display.execute
,浏览器就会以那种方式下载它,虽然我猜它不是你想要的,因为事后你无法访问它。
您可以使用NetworkManager
的进度监听器显示进度。显示通知区域中的进度是Android特定的行为,并且在iOS上不常见。但您可以使用某些本地通知功能https://www.codenameone.com/blog/local-notifications.html
答案 2 :(得分:0)
我和Sadart Abukari一样使用它。
我改变的只是改为使用ToastBar.Status
来显示进度
[...]
NetworkManager.getInstance().addProgressListener((evt) -> {
if (evt instanceof NetworkEvent) {
NetworkEvent e = (NetworkEvent) evt;
if (e.getProgressPercentage() >= 0) {
status.setProgress(e.getProgressPercentage());
}
}
});
NetworkManager.getInstance().addToQueueAndWait(cr);
//Clear the ToastBar
status.clear();
return cr.getResponseCode() == 200;
}