티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Download file inside WebView

WebView 에서 파일 다운로드

 문제 내용 

I have a webview in my Android Application. When user goes to webview and click a link to download a file nothing happens.

저는 안드로이드 어플리케이션에 웹뷰를 가지고 있습니다. 사용자가 웹뷰로 이동하여 파일을 다운로드할 링크를 클릭하면 아무 일도 일어나지 않습니다.
URL = "my url";
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);
mWebView.loadUrl(URL);
Log.v("TheURL", URL);

 

How to enable download inside a webview? If I disable webview and enable the intent to load the URL on browser from application then download works seamlessly.

웹뷰 내에서 다운로드를 가능하게 하는 방법이 있을까요? 어플리케이션에서 브라우저에 URL을 로드하는 인텐트를 비활성화하고 웹뷰를 비활성화하면 다운로드가 원활하게 작동합니다.
String url = "my url";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

 

Can someone help me out here? The page loads without issue but the link to a image file in the HTML page is not working...

여기서 도와주세요. 페이지는 문제없이 로드되지만 HTML 페이지에서 이미지 파일로의 링크는 작동하지 않습니다...

 

 

 

 높은 점수를 받은 Solution 

Have you tried?

다음을 시도해 보셨나요?
mWebView.setDownloadListener(new DownloadListener() {
    public void onDownloadStart(String url, String userAgent,
                String contentDisposition, String mimetype,
                long contentLength) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        startActivity(i);
    }
});

 

Example Link: Webview File Download - Thanks @c49

예시 링크: Webview File Download - c49님 감사합니다.

 

 

 

 가장 최근 달린 Solution 

webView.setDownloadListener(new DownloadListener()
        {
            @Override
            public void onDownloadStart(String url, String userAgent,
                                        String contentDisposition, String mimeType,
                                        long contentLength) {
                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("Downloading File...");
                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) getSystemService(DOWNLOAD_SERVICE);
                dm.enqueue(request);
                Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show();
            }});

 

 

출처 : https://stackoverflow.com/questions/10069050/download-file-inside-webview

반응형
댓글
공지사항
최근에 올라온 글