포럼
혹시 xe를 기반으로해서 안드로이드 웹앱 만들어본분 계신가요?
2014.01.06 17:04
휴...요즘
xe 기반으로 웹사이트 다 만들고 나서 안드로이드로 앱만들고 있는데요
webview 기반으로 사이트 연결하고 해서
뭐 이것저것 다른 문제는 다 해결되었는데
다운로드가 안되네요
게시판에 첨부된 파일 클릭하면 웹브라우저로 넘어져가버리네요
뭔가 저와 비슷한 문제점 겪어 보신분들 계신가요??
하도 잘 안풀려서 글 한번 남겨봅니다...
댓글 6
-
Canto
2014.01.06 17:45
-
Canto
2014.01.06 18:05
방금 안드로이드 개발자 레페런스 문서를 확인해봤더니 웹킷쪽에 downloadlistener 라는 것도 있군요.
요건 intent 를 이용해서 다운로드 해주는 것으로 보입니다.
https://developer.android.com/reference/android/webkit/DownloadListener.html
downloadmanager 를 이용한 방식의 경우 웹뷰로 렌더링할 수 있는 그림 파일의 경우는 다운로드가 되지 않으니 그림 파일 다운로드가 필요하시다면 downloadlistener를 이용하는 것도 괜찮을 듯 싶습니다.
-
Canto
2014.01.06 18:10
하나 더 + 하자면 downloadmanager 를 이용한 경우 노티바를 통해서 진행상황이 표시가 됩니다만.. 완료되면 사라지니..
파일 다운로드 완료후 관련 처리를 하실려면
노티바가 완료되었을때의 데이터를 받아서 다시 노티바를 띄워서 완료상태를 표시하셔야됩니다.
-
Ju-rie
2014.01.06 18:28
우선 답변 감사합니다!
그...위에 말씀하신것들은 다 해결이 된 상태이나...
xe가 첨부파일을 리다이렉트해서 신호를 보내주더라구요
그것때문에 html 파일이 다운로드되고 실제 파일은 다운로드가 안되네요
에고.. redirect 된 주소를 가져와서 그걸 파일 다운로드해야하는데 끄응...이것때문에 지금 4일째 고생이네요
혹시 redirect 주소를 잡는법은 알고 계신가요??
-
Canto
2014.01.06 18:50
아 xe는 리다이렉트를 통해 다운로드 주소를 뽑아왔었죠..;
그럼 xe 게시판 쪽에서 모바일 앱일 경우 xe_files 테이블을 참조해서 uploaded_filename 에 있는 실제경로를 불러온다음에 해당 경로로 다운받게 해주는 방식을 써야될 것 같습니다.
xe_files테이블에 upload_target_srl 이 게시판 문서의 document_srl 이니까 이걸 이용해서 select 해준다음 해주시면 될 것같습니다.
-
Ju-rie
2014.01.06 21:16
말씀 해주신 방법대로 해봤는데요...
안되네요....
이게 보니깐 앱으로 구동시키면 현재 페이지여도 주소가 다르게 인식되어서 그냥 홈으로 가지네요
흠...세션공유로 통해서 하면 될 것 같은데...음...;;
웹뷰를 이용하여 XE의 안드로이드 웹앱을 만들고 운영중에 있습니다.
저는 해당기능을 사용하고 있지는 않은데 일단 설명해드리겠습니다.
일단 안드로이드 프로그래밍에 대해 아신다는 전제하에서 설명하겠습니다.
기본적으로 webview 에서 default 상태로는 다운로드 기능을 사용할 수는 없습니다.
webviewclient 클래스의 shouldoverrideurlloading 을 이용해서 웹문서가 아닌 그림,음악,영상등의 확장자를 가진 파일일 경우
해당 url은 downloadmanager를 이용하여 기동하는 방식으로 하셔야 됩니다.
간단하게 코드로 설명한다면
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading( WebView view, Url url){
boolean shouldOverride = false;
if(확장자체크){
shouldOverride=true;
//확장자 체크하여 해당 url 을 Uri로 파싱 하세요.
DownloadManager.Request requert = new DownloadManager.Request(파싱한Uri);
//다운로드매니저 관련 코드 ~~~
}
}
return shouldOverride;
}
대충 이런 느낌으로 코드를 구현 하시면 됩니다.