2016-03-16 33 views
2

我有WebView上传图片的界面。上传WebView后,必须显示小上传图片,但它显示了一系列符号。WebView上传后显示图片为文字

期望与现实

Screenshot

enter image description here

web = (WebView) findViewById(R.id.account_webview); 
    web.getSettings().setJavaScriptEnabled(true); 
    web.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 
    web.setWebChromeClient(new WebChromeClient()); 
    web.getSettings().setBuiltInZoomControls(true); 
    web.getSettings().setDisplayZoomControls(true); 

    web.setWebViewClient(new WebViewClient() { 

     public void onPageFinished(WebView view, String url) { 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      if (url.substring(url.length() - 3, url.length()).equals("pdf")) { 
       Log.e("shouldOverrideUrlLoadi", "pdf "); 
       web.loadUrl("https://docs.google.com/gview?embedded=true&url=" + url); 
      } else if (url.equals(getResources().getString(R.string.urlHome)) || url.equals(getResources().getString(R.string.urlPaymentIndex)) 
        || url.equals(getResources().getString(R.string.urlDetailIndex))) { 
       overridePendingTransition(R.anim.back_left_out, R.anim.back_right_in); 
      } else{ 
       web.loadUrl(url); 
      } 

      return false; 
     } 

    }); 
    web.setWebChromeClient(new WebChromeClient() { 
     public void openFileChooser(ValueCallback<Uri> uploadMsg) { 

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

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

     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/*"); 
      QueryActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), QueryActivity.FILECHOOSER_RESULTCODE); 

     } 

    }); 

onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent intent) { 
    Log.e("Result"," "+requestCode+" "+resultCode); 
    if(requestCode==FILECHOOSER_RESULTCODE) 
    { 

     intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
     if (null == mUploadMessage) return; 
     Uri result = intent == null || resultCode != RESULT_OK ? null 
       : intent.getData(); 
     Log.e("Result"," "+result); 
     mUploadMessage.onReceiveValue(result); 
     mUploadMessage = null; 
    } 
} 
+0

的字符串格式。一个URI不是一个图像,它是一个统一的资源标识符,正如名称所示,它用于标识要以统一方式使用的资源。 – zgc7009

+0

号我检查时,图像上载正确,但不正确显示 – arcenciel4

+0

你是说 web.loadUrl(“https://docs.google.com/gview?embedded=true&url=” +网址);不显示图像,但图像上传/嵌入? – zgc7009

回答

0

我想你转换的图像String,然后图像传送到服务器

intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());  

所以,再次检查您展示我认为你加载图像,而不是图像本身的URI的图像或图像

+0

它没有帮助。图像正确地上传到服务器,但它显示它像符号。在IOS版本的应用程序,它完美的作品 – arcenciel4