2017-05-31 6 views
0

So habe ich ein WebView für die Website eines Freundes für ein Projekt gemacht, enthält die Website eine Datei Uploader, die, wenn Sie auf einem normalen Mobile/PC-Browser klicken Es öffnet den Dateibrowser/Explorer, um nach der Datei zu suchen, die auf die Website hochgeladen werden soll.Datei Explorer öffnet nicht auf Webview, öffnet auf normalen mobilen Browser

Aber im Fall des WebView habe ich gemacht, wenn ich auf den Datei-Uploader klicke, klicke ich einfach, ohne den Datei-Explorer des Telefons zu löffeln, damit ich Dateien auswählen kann, die ich hochladen möchte.

Irgendwelche Vorschläge? Vielen Dank.

Antwort

1

@Simo Sie müssen den Chrome-Client für Ihr WebView festlegen. Bitte überprüfen Sie unter Code

webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setAllowFileAccess(true); 
webView.getSettings().setAllowContentAccess(true); 
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
webView.setWebChromeClient(new WebChromeClient() 
    { 
     // For 3.0+ Devices (Start) 
     // onActivityResult attached before constructor 
     protected void openFileChooser(ValueCallback uploadMsg, String acceptType) 
     { 
      mUploadMessage = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 
      startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE); 
     } 


     // For Lollipop 5.0+ Devices 
     public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) 
     { 
      if (uploadMessage != null) { 
       uploadMessage.onReceiveValue(null); 
       uploadMessage = null; 
      } 

      uploadMessage = filePathCallback; 

      Intent intent = fileChooserParams.createIntent(); 
      try 
      { 
       startActivityForResult(intent, REQUEST_SELECT_FILE); 
      } catch (ActivityNotFoundException e) 
      { 
       uploadMessage = null; 
       Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show(); 
       return false; 
      } 
      return true; 
     } 

     //For Android 4.1 only 
     protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) 
     { 
      mUploadMessage = uploadMsg; 
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
      intent.addCategory(Intent.CATEGORY_OPENABLE); 
      intent.setType("image/*"); 
      startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE); 
     } 

     protected void openFileChooser(ValueCallback<Uri> uploadMsg) 
     { 
      mUploadMessage = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 
      startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE); 
     } 
    }); 

Auch wie unten

außer Kraft setzen onActivityResult
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
    { 
     if (requestCode == REQUEST_SELECT_FILE) 
     { 
      if (uploadMessage == null) 
       return; 
      uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent)); 
      uploadMessage = null; 
     } 
    } 
    else if (requestCode == FILECHOOSER_RESULTCODE) 
    { 
     if (null == mUploadMessage) 
      return; 
     // Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment 
     // Use RESULT_OK only if you're implementing WebView inside an Activity 
     Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData(); 
     mUploadMessage.onReceiveValue(result); 
     mUploadMessage = null; 
    } 
    else 
     Toast.makeText(getApplicationContext(), "Failed to Upload Image", Toast.LENGTH_LONG).show(); 
} 

Quelle: WebView File Upload

+0

Thank you Ich werde versuchen, diese Umsetzung! –

Verwandte Themen