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)