마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹뷰에서 다운로드 리스너를 쓰면 파일이 아니라 html이 다운됩니다..

0 추천
webview.setDownloadListener(new DownloadListener() {
 
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
 
String[] fnm = url.split("/");
String fname = fnm[fnm.length - 1]; // 파일이름
String fhost = fnm[2]; // 도메인
 
DownloadManager mDownloadManager = (DownloadManager) getBaseContext().getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(url);
DownloadManager.Request mRequest = new DownloadManager.Request(uri);
// mRequest.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); //NETWORK_MOBILE
// mRequest.setAllowedOverRoaming(false);
mRequest.setTitle(fname);
mRequest.setDescription(fhost);
mRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fname);
File pathExternalPublicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
pathExternalPublicDir.mkdirs();
// mRequest.setMimeType(HTTP.OCTET_STREAM_TYPE);
mRequest.setShowRunningNotification(true);
mRequest.setVisibleInDownloadsUi(true);
long downloadId = mDownloadManager.enqueue(mRequest);
 
Toast.makeText(getBaseContext(), "다운로드가 시작되었습니다.", Toast.LENGTH_SHORT).show();
 
// 또는 확장자를 판단하여 연계할 앱으로 보내줄 수 있다.
//                Intent intent = new Intent(Intent.ACTION_VIEW);
//                intent.setType(mimetype);
//                intent.setData(Uri.parse(url));
//                mContext.startActivity(intent);
}
 
});
 
 
다운로드 받을 파일이 아니라 html이 다운로드가 되버리는데 왜 그러는걸까요 ㅠㅠ..
KKO (200 포인트) 님이 2014년 2월 3일 질문

1개의 답변

0 추천
다운로드 패스경로가 직접경로가 아니라 jsp,asp,php 에서 다시 다운로드받는 형식인가요??

직접 경로로 링크해보세요

ex) http://test.com/image1.jpg
bangbang (8,820 포인트) 님이 2014년 2월 3일 답변
아 지금 보니까 jsp 거쳐서 다운받네요..

죄송하지만 이런 경우에는 어떤 방식을 사용해야 하는지 조언 해주실 수 있으신가요?

(혹시 그냥 자바스크립트 사용하도록 설정하면 되려나요 ㄷㄷ)
(아.. 원래 jsp 트루값 줬었었네요 ...)
지금 작성하신 소스에다가 url을 직접경로로 입력하시면 될듯합니다.
죄송하지만 무슨 말씀이신지 잘 모르겠어서 ㅠㅠ..
제가 경로를 지정해주는게 아니라 사이트에서 사용자가 직접 다운받는 기능인데요..
사용자가 직접 다운 받을 때 글쓴이 님은 jsp링크를 걸어 주시자나요?
그 링크 태우시는 jsp에서 무슨 작업을 하는지는 모르겠지만,
그  jsp를 태우는 uri대신에 파일을 직접 uri에 넣으시라는 말이에요.
was서버 돌아가는 폴더에 파일모아놓는 폴더 만드시고 직접 링크를 태우라는 말이에요
ex) http://test.com/filefolder/aaa.jpg
ex) http://test.com/filefolder/aaa.zip
ex) http://test.com/filefolder/aaa.mp3
요러케요..

html을 다운 받는다는거면 jsp자체가 컴파일 하고 나오는 html이니까 html그대로 다운 받는걸로 알고 있어요

http://developer.android.com/sdk/index.html 여기 가보셔서 sdk다운받는 링크 보시면
<a onclick="return onDownload(this)" id="win-bundle32" href="http://dl.google.com/android/adt/adt-bundle-windows-x86-20131030.zip">adt-bundle-windows-x86-20131030.zip</a>
이렇게 링크를 태우자나요 저uri 처럼 링크 태우란 말 이였어요.
...