У меня есть приложение в Android Studio с веб-просмотром, которое показывает страницу, на которой создается PDF-файл.Файл PDF генерируется с помощью html2pdf, вывод метода связан с действием кнопки «Отправить».Когда я пытаюсь загрузить сгенерированный файл, ничего не происходит, как будто я не загружаю код JavaScript.У меня есть все разрешения, назначенные для загрузки файлов в рамках веб-просмотра, загрузки работают отлично, но в этом случае, когда создается PDF, он не работает.Если я тестирую в браузере, таком как Google Chrome, PDF генерируется успешно.Надеюсь, вы можете помочь мне, спасибо заранее.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
getSupportActionBar().hide();
swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
LoadWeb();
webView.reload();
}
});
LoadWeb();
}
public void LoadWeb(){
webView = (WebView)findViewById(R.id.pagina);
webSettings = webView.getSettings();
webSettings.setAppCacheEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
webSettings.setJavaScriptEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
swipe.setRefreshing(true);
webView.setWebChromeClient(new ChromeClient());
if (Build.VERSION.SDK_INT >= 23) {
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
else if(Build.VERSION.SDK_INT >=11 && Build.VERSION.SDK_INT < 23) {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
Intent intent = getIntent();
String Link = intent.getStringExtra(Suscripcion.EXTRA_MESSAGE);
webView.loadUrl(Link);
webView.setWebViewClient(new WebViewClient(){
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
webView.loadUrl("file:///android_asset/error.html");
}
public void onPageFinished(WebView view, String url){
//Hide the SwipeReefreshLayout
swipe.setRefreshing(false);
}
});
webView.setDownloadListener(new DownloadListener()
{
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimeType,
long contentLength) {
if(verifyPermissions(PaginaOficial.this)){
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(url));
request.setMimeType(mimeType);
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Descargando archivo Por Favor Espere...");
request.setTitle(URLUtil.guessFileName(url, contentDisposition,
mimeType));
request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(
url, contentDisposition, mimeType));
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
Toast.makeText(getApplicationContext(), "Descargando archivo Por Favor Espere...",
Toast.LENGTH_LONG).show();
}else{
}
}});
}