如何解决Android Webview + Jquery 数据表按钮:pdf 导出变成 bin 文件
我的 webview 应用程序遇到问题。我有一个 Web 应用程序,它使用带有按钮插件的 JQuery 数据表(如下图所示)
我在我的 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
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 举报,一经查实,本站将立刻删除。