SORU
6 Mayıs 2011, Cuma


Web görünümü dosya Upload

Son birkaç günden beri web görünümü dosyaları yüklemek için uğraşıyorum gün ve orada herhangi bir ilerleme. Ve tüm önerilen araştırdım uygulanan çözümler ama hiç biri işe yaramadı. çözüm yolu önerdi - Android webview, file input field filechooser doesn't show up...., http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.... ve benzeri.

Sorun: bir dosya yüklemek için aşağıdaki kodu bir HTML sayfası var. Firefox gibi bir masaüstü tarayıcıda gayet iyi çalışıyor ve dahili tarayıcı tıklayın "..." düğmesi ile işlenmiş Göz yani, AVD öykünücüsü / eleman, tarayıcı bir İletişim kutusu açar yüklemek için bir dosya seçebilirsiniz kutusu.

Ancak, "Seçim tıkladığınızda android 3.0 emülatörü / AVD, "hiçbir şey olmuyor, hiçbir dosya iletişim kutusu açıldı!!! dosya

<form method="POST" enctype="multipart/form-data">
File to upload: <input type="file" name="uploadfile">  
<input type="submit" value="Press to Upload..."> to upload the file!
</form>

Herkes en kısa zamanda bir çözüm yolu sunun lütfen.

CEVAP
15 Mart 2013, Cuma


Bu tüm android sürümleri için tam bir çözümdür, bu çok zor bir zaman geçirdim.

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

WebView web;
ProgressBar progressBar;

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);
    setContentView(R.layout.main);

    web = (WebView) findViewById(R.id.webview01);
    progressBar = (ProgressBar) findViewById(R.id.progressBar1);

    web = new WebView(this);  
    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("http://www.script-tutorials.com/demos/199/index.html");
    web.setWebViewClient(new myWebClient());
    web.setWebChromeClient(new WebChromeClient()  
    {  
           //The undocumented magic method override  
           //Eclipse will swear at you if you try to put @Override here  
        // For Android 3.0 
        public void openFileChooser(ValueCallback<Uri> uploadMsg) {  

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

           }

        // For Android 3.0 
           public void openFileChooser( ValueCallback uploadMsg, String acceptType ) {
           mUploadMessage = uploadMsg;
           Intent i = new Intent(Intent.ACTION_GET_CONTENT);
           i.addCategory(Intent.CATEGORY_OPENABLE);
           i.setType("*/*");
           MyWb.this.startActivityForResult(
           Intent.createChooser(i, "File Browser"),
           FILECHOOSER_RESULTCODE);
           }

        //For Android 4.1
           public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
               mUploadMessage = uploadMsg;  
               Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
               i.addCategory(Intent.CATEGORY_OPENABLE);  
               i.setType("image/*");  
               MyWb.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MyWb.FILECHOOSER_RESULTCODE );

           }

    });  


    setContentView(web);  


}

public class myWebClient extends WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);

        progressBar.setVisibility(View.GONE);
    }
}

//flipscreen not loading again
@Override
public void onConfigurationChanged(Configuration newConfig){        
    super.onConfigurationChanged(newConfig);
}

// To handle "Back" key press event for WebView to go back to previous screen.
/*@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
        web.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}*/
}

Ayrıca eklemek isterim ki "upload sayfası" gibi bir örneğin, alışkanlık iş üzerinde < 4 sürümleri'den bu yana resim önizleme özelliği, isterseniz çözüm sağlamak için basit bir php upload etmeden önizleme.

Güncelleme:

Lütfen lollipop cihazlar için çözüm here gauntface için teşekkür ederiz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006
  • Paste Magazine

    Paste Magazi

    28 AĞUSTOS 2008
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006