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

WebView관련 질문입니다.

0 추천
안드로이드 WebView에 jsp 파일을 로드했습니다.

로딩된 WebView 안에 버튼이 있는데요(jsp에서 만든 것)

그 버튼을 클릭했을 때 스마트 폰 안에 있는 파일을 Upload 하기 위해 필요한 애플리케이션을 선택하는

창이 뜨야되는데 문제는...

-. 모바일에 있는 기본 웹 브라우저에서는 정상적으로 실행이 되는데요

-. 안드로이드 WebView로 작성된데서는 클릭 이벤트에 대한 후속 처리가(파일 Upload 위한 창이) 안 뜨네요 ;;;

WebView에 대한 setting과 관련이 있지 않을까 생각하는데 방법이 없네요...;;

도움 부탁드립니다..
UnlimitedJava (910 포인트) 님이 2013년 7월 8일 질문

2개의 답변

+1 추천

이거 크롬클라이언트를 셋 해주고

아래 메소드들을 오버라이딩 해줘야하니다.

public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType) {

openFileChooser(uploadFile);

}

 

// add jellybean code

public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {

openFileChooser(uploadMsg, "");

}

 

public void openFileChooser(ValueCallback<Uri> uploadMsg) {

uploadMessage = uploadMsg;

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("*/*");

startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);

}

SGLEE (1,690 포인트) 님이 2013년 7월 8일 답변
네 맞습니다. 이 방법으로 해결했습니다.
답글 감사합니다.^^
0 추천
이런 코드를 추가해 보세요

WebSettings webset = 웹뷰.getSettings();

webset.setJavaScriptEnabled(true) 를 사용해 보세요.. 아마 스크립트 활성이 안되어 진듯..?
적유 (1,760 포인트) 님이 2013년 7월 8일 답변
답변 감사합니다.
webset.setJavaScriptEnabled(true) 는 해 줬거든요...
근데 안되고 있습니다. ;;;
아래는 셋팅 내용입니다.

mWeb = (WebView)findViewById(R.id.mWeb);
mWeb.setWebViewClient(new MyWebClient());

WebSettings wSet = mWeb.getSettings();
wSet.setJavascriptEnabled(true);
wSet.setPluginsEnabled(true);
wSet.setBuiltInZoomControls(true);
       
wSet.setJavascriptCanOpenWindowsAutomatically(true);
       
mWeb.setFocusable(true);
wSet.setAllowFileAccess(true);
mWeb.setFocusableInTouchMode(true);
혹시 세팅부분말고 webview의 클릭 이벤트에 대한 class를 정의해 두셨나요... (shouldOverrideUrlLoading)
제가 잘못이해한건지 모르겠는데, 웹뷰로 불러온 페이지안의 버튼을 클릭할시, 다른 어플리케이션을 실행하기 위한 창(예를들어 마켓 인텐트라던지) 이런걸 불러오려는게 안된다는건가요?
답글 감사합니다.
웹뷰로 불러온 페이지 안의 버튼을 클릭시 스마트폰 안의 파일을 업로드하기 위해 필요한 애플리케이션을 불러올려고 합니다. 그 창이 뜨야되는데 안뜨는겁니다.
WebView의 클릭 이벤트에 대한 class를 정의한다는 건 어떤 내용이죠?
WebViewClient 클래스 상속받는 거 말씀이신지요?
네 제가 이해한게 맞다면, WebViewClient를 상속 받으셔서 shouldOverrideUrlLoading을 오버라이드 하신후 웹뷰로 불러진 페이지에서 버튼을 클릭할 시 이벤트를 체크하셔서 intent.setAction("업로드 어플 패키지")하신다면 될거같아서요..
WebView에 jsp 파일을 로드하는데 shouldOverrideUrlLoading() 자체가 호출이 안되더군요....
일단은 다른 방법으로 해결은 했습니다.
답글에 대단히 감사합니다.
...