Открытие документов по URL в стороннем приложение через Webview
есть виджет webview, использую как почтовый клиент. По почте постоянно приходят doc файлы, интернет изолирован(локальная сеть компании) использовать google doc нет возможности но на устройстве установлена простая читалка doc файлов.
Можно ли передать файл ссылкой в установленное приложение на устройстве из webview?
пытался так скачивать файлы, но при попытке скачать открывается другой браузер с сылкой для скачивания
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
i.setData(Uri.parse(url));
startActivity(i);
}
});
Ответы (1 шт):
Автор решения: LockD
→ Ссылка
решение
mWebView.setDownloadListener(new DownloadListener() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
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("Загрузка документа....");
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)getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
dm.enqueue(request);
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(request.toString()), "application/*");
startActivity(intent);
} else {
Log.d("permission", "Разрешить сохранять файлы?");
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permissions, 1);
}
}
}
});