Я разрабатываю довольно простое приложение, которое предназначено для представления только веб-просмотра уже созданного мной веб-сайта.
На этом веб-сайте вы можете написать в журнале (текстовая область в форме), что затем отправьте в файл. 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](https://i.stack.imgur.com/G1OhU.png)
В браузере все это прекрасно работает, поэтому я был просто интересно, есть ли еще одна настройка, которую я должен добавить, чтобы веб-просмотр мог обрабатывать POST'ing между экранами.
Спасибо!
-редактировать 4/29: Изменены изображения кода в кодовый текст