Canvas js export enable не работает на устройстве Android
Я работаю над CANVASjS
и создаю пример приложения, которое отображает данные на диаграмме. Я включил export
для сохранения диаграммы в .png
и .jpeg
и печати. При развертывании на ripple emulator
экспорт работает идеально, но когда я его развертываю на моем android device
, он не работает. Ниже приведена часть кода, в которой я включил экспорт.
var chart = new CanvasJS.Chart("container", {
zoomEnabled: true,
zoomType: "xy",
animationEnabled: true,
animationDuration: 2000,
exportEnabled: true,
// all other chart code
});
Обновление 1:
function drawChart(data)
{
var chart = new CanvasJS.Chart("container", {
zoomEnabled: true,
zoomType: "xy",
animationEnabled: true,
animationDuration: 2000,
exportEnabled: true,
exportFileName: "Column Chart",
title: {
text: "Energy vs Date Time"
},
axisY: {
title: "EnergykWh",
interlacedColor: "#F8F1E4",
tickLength: 10,
suffix: "k",
},
legend: {
cursor: "pointer",
itemclick: function (e) {
if (typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
e.chart.render();
}
},
dataPointWidth: 20,
data: [{
//legendText: "EngergykWh",
showInLegend: true,
type: 'column',
//xValueType: "dateTime",
xValueFormatString: "DD/MMM/YYYY h:mm TT",
//xValueFormatString: "YYYY-MM-DD hh:mm:ss TT",
showInLegend: true,
name: "series1",
legendText: "EnergykWh",
dataPoints: data
}]
});
chart.render();
}
Обновление 2:
Ниже представлены информационные изображения и ссылка на версии ОС Android, на которых я пробовал
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Galaxy j7 2015
Я не знаю, в чем главная проблема.
Любая помощь будет высоко оценена.
Ответы
Ответ 1
В веб-обзоре нет диспетчера загрузок, поэтому вам необходимо вручную обрабатывать загрузку. Существует два способа загрузки файла из webview.
1.Использование диспетчера загрузки Android
2. Использование веб-браузера, открытого из веб-браузера (который обычно использует Android Download Manager)
Требуемое разрешение включает WRITE_EXTERNAL_STORAGE
Затем установите загрузчик-прослушиватель для веб-просмотра.
webView.setDownloadListener(new DownloadListener(){
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength){
//for downloading directly through download manager
Request request = new Request(Uri.parse(url));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "download");
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
}
});
Для получения дополнительной информации см. следующие ссылки: Ссылка 1, Link2, Ссылка 3, Ссылка4
Ответ 2
При нажатии кнопки загрузки canvasJS использует атрибут загрузки HTML5 для запуска загрузки, что хорошо работает в браузерах, которые его поддерживают.
Однако, когда вы нажимаете одну и ту же ссылку в своем приложении Cordova, веб-просмотр, в котором он работает, не знает, как обрабатывать загрузки файлов. Поэтому ничего не происходит.
Похоже, вы могли бы включить эту функцию самостоятельно, добавив в приложение некоторую пользовательскую Java. К сожалению, я не разработчик Android Java, но эта проблема может помочь вам - Загрузить файл внутри WebView
Ответ 3
Этот плагин должен помочь вам сохранить ваше изображение в качестве файла загрузки.
Продвижение вашего холста - "myCanvas":
Canvas2Image.saveAsPNG(myCanvas, width, height)
или
Canvas2Image.saveAsJPEG(myCanvas, width, height)