Как распечатать из Android WebView, используя Javascript? - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь распечатать веб-страницу, когда кнопка нажата на веб-странице с помощью введения javascript. Я получаю сообщение о тосте успешно, но опция печати не работает. Ожидаемый результат - когда пользователь нажимает кнопку «ОК» на веб-странице, он должен отображать предварительный просмотр.

MainActivity:

        browser = new WebView(this);
        browser.getSettings().setJavaScriptEnabled(true);


        browser.post(new Runnable() {
            @Override
            public void run() {
                browser.loadUrl("file:///android_asset/page.html");

            }
        });
        setContentView(browser);
        WebSettings ws = browser.getSettings();
        ws.setJavaScriptEnabled(true);
        browser.setWebChromeClient(new WebChromeClient());
        browser.addJavascriptInterface(new Object() {
            @JavascriptInterface           // For API 17+
            public void performClick(String strl) {
                Toast.makeText(PrintTest.this, strl, Toast.LENGTH_SHORT).show();
                createWebPrintJob();
            }
        }, "ok");
    }


    private void createWebPrintJob() {


        PrintManager printManager = (PrintManager) getApplication().getSystemService(Context.PRINT_SERVICE);

        @SuppressLint({"NewApi", "LocalSuppress"}) PrintDocumentAdapter printAdapter =
                browser.createPrintDocumentAdapter("MyDocument");

        String jobName = getString(R.string.app_name) +
                " Print Test";

        if (printManager != null) {
            printManager.print(jobName, printAdapter,
                    new PrintAttributes.Builder().build());
        }

    }

}

стр. html

<html>
<body>

<button id="btnOK" onclick="ok.performClick(this.value);" type="button" value="">OK
</button>
</body>
</html>

Ошибка:

W/WebView: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...