2011-12-12 6 views
2

webview를 사용하여 Android 2.2.1 앱을 개발 중입니다. 파일 업로드에 대한 해결책을 찾을 수없는 것 같습니다. 표준 파일 업로드 양식입니다. Webview는 브라우저 상자를 팝업하지 않습니다. 웹 브라우저 자체에서 모든 것이 작동합니다. webview에서 브라우징 팝업이 없습니다. 해결책을 알고 있다면 안드로이드 코드 섹션에 추가 된 코드를 어디에 넣어야하는지 정확하게 알려주십시오. 아래HTML 형식을 사용하여 Android 2.2.1 웹보기에 파일 업로드

파일 업로드 양식 :

<form name="form" id="fileupload" enctype="multipart/form-data" action="upload.asp" method="post"> 
<input id="blob" name="blob" class="simpleinput" type="file" /> 
</form> 
아래

안드로이드 코드 :

package com.pic21.app; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class pic21 extends Activity { 
    /** Called when the activity is first created. */ 

    WebView mWebView; 

    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.m.blah.com"); 
     mWebView.setWebViewClient(new HelloWebViewClient()); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

답변

0

(. 질문 편집의 영업 이익으로 답변 Question with no answers, but issue solved in the comments (or extended in chat) 참조)

영업 쓴 :

주위를 둘러 보았습니다. webChromeClient를 사용하여 작동하는 코드가 조금 더 발견되었습니다. 아래에 근무 코드 :

package com.pic21.app; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.ValueCallback; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

@SuppressWarnings("unused") 
public class pic extends Activity { 

private WebView mWebView; 

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

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
            Intent intent) { 
    if(requestCode==FILECHOOSER_RESULTCODE) 
    { 
    if (null == mUploadMessage) return; 
    Uri result = intent == null || resultCode != RESULT_OK ? null 
    : intent.getData(); 
    mUploadMessage.onReceiveValue(result); 
    mUploadMessage = null; 
    } 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mWebView = new WebView(this); 
    mWebView.setWebViewClient(new WebViewClient()); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.m.blah.com"); 
    mWebView.setWebChromeClient(new WebChromeClient() 

    { 
    @SuppressWarnings("unused") 
     public void openFileChooser(ValueCallback<Uri> uploadMsg) { 

    mUploadMessage = uploadMsg; 
    Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
    i.addCategory(Intent.CATEGORY_OPENABLE); 
    i.setType("image/*"); 
    pic21Activity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE); 

     } 
    }); 

    setContentView(mWebView); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
mWebView.goBack(); 
return true; 
} 
return super.onKeyDown(keyCode, event); 
} 

} 

가의 AndroidManifest.xml 파일에 대한 코드가 인터넷 권한을 포함해야

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.pic21.app" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <uses-sdk android:minSdkVersion="7" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".pic21Activity" 
      android:theme="@android:style/Theme.NoTitleBar" 
      android:screenOrientation="portrait" 
      android:configChanges="orientation|keyboardHidden|keyboard" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
관련 문제