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

안드로이드 webview 에서 파일올리기시 문제

0 추천
모바일웹을 안드로이드 webview에서 불러서 모바일앱을 만들고 있습니다.
파일올리기 버튼 클릭후 파일을 선택하면 백색화면(아무것도 없는)으로 넘어가버립니다.그후 back버튼사용하면
파일올리기 페이지가 있는곳으로 돌아옵니다.
파일업로드를 가 되질 않습니다 도와주세요(모바일웹에서는 정상적으로 동작됩니다. xe 게시판사용중)
안드로이드 2.2 버전 사용중입니다.
증상입니다.
 
package com.corea.mym;
public class MainActivity extends Activity {
 //webview 생성
 private WebView myView;
 private Activity activity;
 //파일업로드부분
 private static int FILECHOOSER_RESULTCODE = 1;
    private ValueCallback<Uri> uploadMessage;
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == FILECHOOSER_RESULTCODE) {
   Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
   uploadMessage.onReceiveValue(result);
   uploadMessage = null;

  }
 }
    @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //setContentView 보다 윗줄에 있어야 함
  getWindow().requestFeature(Window.FEATURE_PROGRESS);
  setContentView(R.layout.activity_main);  
  //id식별
  myView = (WebView)findViewById(R.id.webView1);
  //플러그인
  myView.getSettings().setPluginsEnabled(true);
  //줌과 자바스크립트
  myView.getSettings().setJavascriptEnabled(true);
  myView.getSettings().setBuiltInZoomControls(true);
  final Activity activity = this;
  //web 브라우져 이벤트 구현 클래스
  myView.setWebChromeClient(new WebChromeClient() {
         //프로그래스바
          public void onProgressChanged(WebView view, int progress) {
                 activity.setProgress(progress * 100);
             }
            //업로드할 파일을 선택
   //버전<3.0
    public void openFileChooser(ValueCallback<Uri> uploadFile, String acceptType) {
    openFileChooser(uploadFile);
   }
   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);
   }
  });
  //버튼 id 식별
  Button btnBack = (Button)findViewById(R.id.button1);
  Button btnHome = (Button)findViewById(R.id.button2);
  Button btnForward = (Button)findViewById(R.id.button3);
    
  //back 버튼
  btnBack.setOnClickListener(new OnClickListener(){
   public void onClick(View v) {
    if(myView.canGoBack()){
    myView.goBack();
   }
  }
  });
  //Forward버튼
  btnForward.setOnClickListener(new OnClickListener(){
   public void onClick(View v) {
    if(myView.canGoForward()){
    myView.goForward();
   }
  }
  });
  //홈버튼
  btnHome.setOnClickListener(new OnClickListener(){
   public void onClick(View v) {
    myView.loadUrl("사용하는 모바일웹주소");
   }
  });
  //url
  myView.loadUrl("사용하는 모바일 웹주소");
  myView.setWebViewClient(new MyView());
 }
  //어플실행중 back키로 인한 홈으로돌아가는것 방지
 public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if((keyCode == KeyEvent.KEYCODE_BACK)&& myView.canGoBack()){
         myView.goBack();
         return true;
        }
        return super.onKeyDown(keyCode, event);
       }
 //webView가 URL 처리
 class MyView extends WebViewClient {
  public boolean shouldOverrideUrlLoading(WebView view, String url){
   view.loadUrl(url);
   return true;
  }
 }
}

 

 

 

<load target="js/ajaxfileupload.js" type="body" />
 <!--// 이미지 업로드 -->
 <div cond="!$document_srl" id="mUpload">
  <div class="bg_f_f9 clear">
   <strong class="fl">{$lang->uploaded_file}</strong> <button type="button" class="btn fr" onclick="jQuery('#Filedata').click()">{$lang->upload_file}</button>
   <form name="form" action="" method="POST" enctype="multipart/form-data" class="blind">
    <input id="Filedata" type="file" name="Filedata" onchange="ajaxFileUpload()" />
   </form>
  </div>
 
finish() 업로드 뒤에 사용하라는 답을 들어서 시도해봤는데 되지 않아서 질문을 올리게 되었씁니다.
finish()이것을 사용하는것이 맞나요?액티비티는 하나인데 사용하면 종료되버리는현상이 나와서..
제가 이해를 잘 못해서 그런거 같기도 해서 아시는분은 부탁드립니다 .

 

정호호호 (120 포인트) 님이 2013년 5월 24일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...