【问题标题】:Load resources image to webview将资源图像加载到 webview
【发布时间】:2013-11-28 07:53:09
【问题描述】:

我在为我的应用程序打包图片时遇到问题。 我的项目中有原始文件夹。该文件夹包含 jpg 格式的图像,例如 img1.jpg、img2.jpg。 我需要在我的应用程序的 WebView 中查看这些文件。

我试试

String Url="file:///android_res/raw/"+neccessary_file";
WebView.LoadUrl(Url);

当我尝试应用程序 webview 发送 404 页面时,找不到文件。 我该怎么做才能正确?

【问题讨论】:

    标签: android webview resources imageview drawable


    【解决方案1】:

    尝试使用

    附加您的 URL
    String html = "<html><head></head><body><img src=\""+ URL + "\"></body></html>";
    webView.loadDataWithBaseURL("", html, "text/html","utf-8", ""); 
    

    也可以参考这个链接https://stackoverflow.com/a/14405801/1208563

    【讨论】:

      【解决方案2】:

      使用资源id,格式为:

      "android.resource://[package]/[res type]/[res name]"
      
      Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/raw/myfile");
      

      【讨论】:

      • 我需要使用名称,因为我从数据库中选择文件名。在这种情况下我如何获得资源。我可以通过 id = getResources().getIdentifier(neccessary_image_name, "raw", "com.android.project");但是如何在我的代码中使用它呢?
      【解决方案3】:

      我知道已经晚了,但也许可以帮助别人。

              WebView webView = new WebView(context);
              webView.setWebViewClient(new WebViewClient() {
      
                  @Nullable
                  @Override
                  public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
                      return interceptRequest(url);
                  }
      
                  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                  @Nullable
                  @Override
                  public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
                      try {
                          return interceptRequest(request.getUrl().toString());
                      } catch (Exception e) {
                          Log.w("WebViewClient.shouldInterceptRequest", "request = " + request, e);
                      }
                      return null;
                  }
      
                  private WebResourceResponse interceptRequest(String url) {
                      WebResourceResponse webResourceResponse = null;
                      try {
                          Resources resources = context.getResources();
                          if (url.startsWith("file:///android_res/raw/")) {
      
                              String resName = url.substring("file:///android_res/raw/".length());
                              int resourceId = resources.getIdentifier(resName, "raw", Lambo.getAppContext().getPackageName());
      
                              TypedValue value = new TypedValue();
                              resources.getValue(resourceId, value, false);
                              String typeValueString = value.string.toString();
                              String extension = typeValueString.substring(typeValueString.lastIndexOf('.') + 1);
                              String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
                              InputStream inputStream = resources.openRawResource(resourceId);
                              webResourceResponse = new WebResourceResponse(mimeType, null, inputStream);
                          }
                      } catch (Exception e) {
                          Log.w("WebViewClient.interceptRequest", "url = " + url, e);
                      }
                      return webResourceResponse;
                  }
      
              });
      

      【讨论】:

        猜你喜欢
        • 2011-06-18
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 2012-11-15
        • 2013-06-10
        相关资源
        最近更新 更多