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

조회수 1911회

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

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 안드로이드 웹뷰에서 파일첨부기능을 작동시키려면 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;
    
         }
        }
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)