#android #jquery #datatables
#Android #jquery #таблицы данных
Вопрос:
Я столкнулся с проблемой с моим приложением webview. У меня есть веб-приложение, которое использует таблицы данных jQuery с плагином buttons (как видно из изображения ниже)
Я использую это веб-приложение в своем приложении webview. когда я нажимаю кнопку «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" />
И это код для моего приложения webview в 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(), "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);
}
}
}
}
});
}
private class Callback extends WebViewClient {
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event){
return false;
}
}
}
Я не очень хорошо знаком с Java, поэтому я не уверен, чего не хватает в моем коде для достижения моей цели.
Заранее спасибо за помощь.