Webview - incluir imagem input type file

1 resposta
L

Olá Amigos,

Estou desenvolvendo um app para celular android. Ele foi desenvolvido em webview, e funciona muito bem. O que acontece é que a parte de enviar a foto para o site (através do comando html ) está bloqueada pelo app, não funciona

Fiz muitas pesquisas e sei que existe uma limitação para essa programação para alguns versões do android.

Preciso de uma ajuda.

Desde já agradeço pela atenção.

1 Resposta

Leonardo_Dias

Fala Luis,

Nunca usei essa técnica, mas dei uma pesquisa sobre e achei algumas soluções:

Esta é uma solução completa para todas as versões do Android.

public class MyWb extends Activity {
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

{

<a class="mention" href="/u/override">@Override</a>

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

<a class="mention" href="/u/override">@Override</a>

public void onConfigurationChanged(Configuration newConfig){

super.onConfigurationChanged(newConfig);

}

}`

Segue os links de onde encontrei as soluções:

http://stackoverflow.com/questions/5907369/file-upload-in-webview

https://github.com/GoogleChrome/chromium-webview-samples/tree/master/input-file-example

Abraços.

Criado 7 de março de 2016
Ultima resposta 8 de mar. de 2016
Respostas 1
Participantes 2