Android Webview PHP Публикация в mPDF - PullRequest
0 голосов
/ 29 апреля 2020

Я разрабатываю довольно простое приложение, которое предназначено для представления только веб-просмотра уже созданного мной веб-сайта.

На этом веб-сайте вы можете написать в журнале (текстовая область в форме), что затем отправьте в файл. php, который загружает PDF, используя mpdf. Я попытался сделать это в веб-приложении, и кажется, что POST не происходит. Он перенаправляет на php (я могу сказать, потому что дата все еще находится в загруженном PDF), но информация из формы не передается между страницами.

Для справки, вот мое веб-представление и настройки, которые я применил:

private WebView webView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.webView = (WebView) findViewById(R.id.webview);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);

        WebViewClientImpl webViewClient = new WebViewClientImpl(this);
        webView.setWebViewClient(webViewClient);

        webView.loadUrl(/*link*/);

        webView.setDownloadListener(new DownloadListener() {

            @Override
            public void onDownloadStart(String url, String userAgent,
                                        String contentDisposition, String mimetype,
                                        long contentLength) {
                DownloadManager.Request request = new DownloadManager.Request(
                        Uri.parse(url));

                Calendar rightNow = Calendar.getInstance();

                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Journal: " + rightNow.getTime());
                DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                dm.enqueue(request);
                Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                        Toast.LENGTH_LONG).show();

            }
        });
    }

Форма в моем файле:

<form method="POST" id="webForm" name="webForm" onSubmit="return validateForm(webForm);" action="testAdd.php" target=_top><center>
    <div class="form-group">
        <textarea class="form-control" aria-label="With textarea" id=journal name=journal rows="15" placeholder="Start your entry..."></textarea>
        <textarea class="form-control" id=passPrompt name=passPrompt style="display:none;"></textarea>
    </div>
    <br>
    <input type="submit" name="step2" id="step2" value="Save Journal" class="btn btn-primary"/><br><br>

И форма, которую он отправляет:

$prompt=$_POST['passPrompt'];

require_once __DIR__ . '/mpdf/vendor/autoload.php';

$messages=$_POST['journal'];
$messages=str_replace("\\r\\n", "<br>", $messages);

$mpdf = new mPDF();
$date=date("d-m-Y h:i:s");
$saveDate=date("m-d-Y");

$mpdf->WriteHTML("<html>
    <h4>$prompt</h4>
    $saveDate
    <hr>
    <h6>$messages</h6>
  </html>");
$name="Journal" . $date . ".pdf";
$mpdf->Output("$name",'D');

И что в PDF, который загружается на устройство (независимо от того, что введено в форму):

enter image description here

В браузере все это прекрасно работает, поэтому я был просто интересно, есть ли еще одна настройка, которую я должен добавить, чтобы веб-просмотр мог обрабатывать POST'ing между экранами.

Спасибо!

-редактировать 4/29: Изменены изображения кода в кодовый текст

...