Codenameone 实现下载进度条
下载文件时,它会在通知或其他地方显示下载进度。 但我认为它不是默认的cn1应用程序。我想添加进度侦听器。如何让它工作Codenameone 实现下载进度条,codenameone,Codenameone,下载文件时,它会在通知或其他地方显示下载进度。 但我认为它不是默认的cn1应用程序。我想添加进度侦听器。如何让它工作 if (!FileSystemStorage.getInstance().exists(filename)) { com.codename1.io.Util.downloadUrlToFile(PdfUrl, filename, true); } 浏览器本地下载文件的方式是浏览器的特例,与应用程序无关。你可以用一个文件调用Displ
if (!FileSystemStorage.getInstance().exists(filename)) {
com.codename1.io.Util.downloadUrlToFile(PdfUrl, filename, true);
}
浏览器本地下载文件的方式是浏览器的特例,与应用程序无关。你可以用一个文件调用
Display.execute
,浏览器就会以这种方式下载它,尽管我猜这不是你想要的,因为事后你将无法访问它
您可以使用
NetworkManager
的进度侦听器显示进度。在通知区域显示进度是Android特有的行为,在iOS上并不常见。但是您可能可以使用一些本地通知功能,在我的例子中,您可以使用下面的代码
/**
* 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;
}
我需要显示视频下载进度。我希望它能帮上忙。我和萨达特·阿布卡里一样使用它 我唯一改变的是我使用了
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;
}
谢谢你@Sadart Abukari。。。你也实施过取消下载吗?这非常有帮助…@beck您可以使用ConnectionRequest的kill()方法取消下载。建议如下。这意味着上面的downloadUrlToAdapt方法不会只返回responseCode。它必须返回包含responseCode状态和ConnectionRequest对象本身的数组或hashmap,以便kill()方法可以在任何地方对其进行操作。