안녕하세요. 안드로이드스튜디오로 그누보드를 이용해서 웹뷰로 게시판을 구현했는데요. 파일첨부기능이 안되네요..<도와주세요.>


안녕하세요. 안드로이드 스튜디오로 앱 제작 중입니다. (초보) fragment에 그누보드5 게시판을 웹뷰로 불러와서 모바일에서 잘 작동됩니다. 하지만 게시글 작성에 파일첨부 버튼을 클릭하면 모바일에서는 아무런 작동을 하지 않습니다. 컴퓨터로 게시판 주소를 들어가보면 파일첨부 기능이 잘 작동되지만요.. java관련해서 안드로이드 스튜디오 파일 안에 추가해주어야 할 부분이 있나요? 퍼미션은 카메라와 외장메모리 추가해놓았습니다.. 안드로이드 sdk version 23입니다.

아니면 게시판 관련 php파일을 수정해주어야하나요 ? 수정해야한다면 어느부분에 어떤식으로 해야할지...자세하게 도와주시면 감사드리겠습니다.

  • 2016년 05월 01일에 작성됨

조회수 372


1 답변


좋아요
2
싫어요
채택취소하기

안드로이드 웹뷰에서 파일첨부기능을 작동시키려면 openFileChooser를 오버라이드해서 따로 구현을 해주어야합니다. 안드로이드 버전별로 처리하는 방식이 다른데요. 최신버전기준으로는 아래처럼하시면됩니다.

 private ValueCallback<Uri> mUploadMessage;
private static final int FILECHOOSER_RESULTCODE   = 1000;

webView.setWebChromeClient(new WebChromeClient() {
// ICS 에서도 동작하기 위해서는 아래메소드를 넣어줘야한데요. 
public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType) {
openFileChooser(uploadFile);
}

public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(Intent.createChooser(intent, "File Chooser"), RC_FILE_CHOOSE );
});

  // SD카드에서 파일을 선택하고 오면 아래 onActivityResult가 불릴거에요.
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if(requestCode==FILECHOOSER_RESULTCODE) {  
            if (null == this.mUploadMessage) {
                return;
            }

           Uri result=null;
           try{
                if (resultCode != RESULT_OK) {
                    result = null;
                } else {

                    result = intent.getData(); 
                } 
            }
            catch(Exception e)
            {
                Toast.makeText(getApplicationContext(), "activity :"+e,
                 Toast.LENGTH_LONG).show();
            }

            mUploadMessage.onReceiveValue(result);
            mUploadMessage = null;

     }
    }

  • 2016년 05월 02일에 수정됨
    안드로이드, 루비온레일즈
  • 2016년 05월 01일에 작성됨
    안드로이드, 루비온레일즈

  • 정말 감사드립니다.ㅠㅠ!!    Jaceis   2016.5.1 22:40     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close