Android Webview + Jquery 数据表按钮:pdf 导出变成 bin 文件

问题描述

我的 webview 应用程序遇到问题。我有一个 Web 应用程序,它使用带有按钮插件的 JQuery 数据表(如下图所示)

enter image description here

我在我的 webview 应用程序中使用这个 web 应用程序。当我单击“PDF”按钮时。它应该下载一个包含表中数据的 pdf 文件。但实际情况是它正在下载“.bin”文件而不是“pdf”文件

这些是在我的 AndroidManifest.xml

中设置的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />

这是我在 MainActivity.java

中的 webview 应用程序的代码
public class MainActivity extends AppCompatActivity {
WebView web;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    web = findViewById(R.id.webView);
    WebSettings webSettings = web.getSettings();

    webSettings.setJavaScriptEnabled(true);
    web.setWebViewClient(new Callback());

    web.loadUrl("http://webview.web-app.cf/");
    web.setDownloadListener(new DownloadListener() {
        @Override
        public void onDownloadStart(String url,String userAgent,String contentdisposition,String mimetype,long contentLength) {
            try {
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse("http://webview.web-app.cf/"));
                request.setMimeType(mimetype);
                String cookies = CookieManager.getInstance().getCookie("http://webview.web-app.cf/");
                request.addRequestHeader("cookie",cookies);
                request.addRequestHeader("User-agent",userAgent);
                request.setDescription("Downloading File . . .");
                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,URLUtil.guessFileName("http://webview.web-app.cf/",null,null));
                DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                dm.enqueue(request);
                Toast.makeText(getApplicationContext(),"Downloading File",Toast.LENGTH_LONG).show();
            }catch (Exception e){
                if (ContextCompat.checkSelfPermission(MainActivity.this,android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        != PackageManager.PERMISSION_GRANTED) {
                    
                    if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                        Toast.makeText(getBaseContext(),"To download attachments,Please tap allow when prompted",Toast.LENGTH_LONG).show();
                        ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},110);
                    } else {
                        Toast.makeText(getBaseContext(),110);
                    }
                }
            }
        }
    });
}

private class Callback extends WebViewClient {
    @Override

    public boolean shouldOverrideKeyEvent(WebView view,KeyEvent event){
        return false;
    }
  }
}

我对 Java 不是很熟悉,所以我不确定我的代码中缺少什么来实现我的目标。

预先感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)