Открытие документов по 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);
                }
            }
        }



    });
→ Ссылка