public Bitmap createBitmap(Object image) {
   if (image instanceof TiBlob) {
     TiBlob blob = (TiBlob) image;
     return TiUIHelper.createBitmap(blob.getInputStream());
   } else if (image instanceof FileProxy) {
     FileProxy file = (FileProxy) image;
     try {
       return TiUIHelper.createBitmap(file.getBaseFile().getInputStream());
     } catch (IOException e) {
       Log.e(
           LCAT,
           "Error creating drawable from file: " + file.getBaseFile().getNativeFile().getName(),
           e);
     }
   } else if (image instanceof String) {
     String url = proxy.getTiContext().resolveUrl(null, (String) image);
     TiBaseFile file =
         TiFileFactory.createTitaniumFile(proxy.getTiContext(), new String[] {url}, false);
     try {
       return TiUIHelper.createBitmap(file.getInputStream());
     } catch (IOException e) {
       Log.e(LCAT, "Error creating drawable from path: " + image.toString(), e);
     }
   } else if (image instanceof TiDict) {
     TiBlob blob = TiUIHelper.getImageFromDict((TiDict) image);
     if (blob != null) {
       return TiUIHelper.createBitmap(blob.getInputStream());
     } else {
       Log.e(LCAT, "Couldn't find valid image in object: " + image.toString());
     }
   }
   return null;
 }
 public void setBackgroundImageProperty(TiDict d, String property) {
   String path = TiConvert.toString(d, property);
   String url = tiContext.resolveUrl(null, path);
   TiBaseFile file = TiFileFactory.createTitaniumFile(tiContext, new String[] {url}, false);
   try {
     setBackgroundDrawable(new BitmapDrawable(TiUIHelper.createBitmap(file.getInputStream())));
   } catch (IOException e) {
     Log.e(LCAT, "Error creating background image from path: " + path.toString(), e);
   }
 }
  public void setUrl(String url) {
    if (url == null) return;
    reloadMethod = reloadTypes.URL;
    reloadData = url;
    String finalUrl = url;
    Uri uri = Uri.parse(finalUrl);
    boolean originalUrlHasScheme = (uri.getScheme() != null);

    if (!originalUrlHasScheme) {
      finalUrl = getProxy().resolveUrl(null, finalUrl);
    }

    if (TiFileFactory.isLocalScheme(finalUrl) && mightBeHtml(finalUrl)) {
      TiBaseFile tiFile = TiFileFactory.createTitaniumFile(finalUrl, false);
      if (tiFile != null) {
        StringBuilder out = new StringBuilder();
        InputStream fis = null;
        try {
          fis = tiFile.getInputStream();
          InputStreamReader reader = new InputStreamReader(fis, "utf-8");
          BufferedReader breader = new BufferedReader(reader);
          String line = breader.readLine();
          while (line != null) {
            if (!bindingCodeInjected) {
              int pos = line.indexOf("<html");
              if (pos >= 0) {
                int posEnd = line.indexOf(">", pos);
                if (posEnd > pos) {
                  out.append(line.substring(pos, posEnd + 1));
                  out.append(TiWebViewBinding.SCRIPT_TAG_INJECTION_CODE);
                  if ((posEnd + 1) < line.length()) {
                    out.append(line.substring(posEnd + 1));
                  }
                  out.append("\n");
                  bindingCodeInjected = true;
                  line = breader.readLine();
                  continue;
                }
              }
            }
            out.append(line);
            out.append("\n");
            line = breader.readLine();
          }
          setHtmlInternal(
              out.toString(),
              (originalUrlHasScheme ? url : finalUrl),
              "text/html"); // keep app:// etc. intact in case
          // html in file contains links
          // to JS that use app:// etc.
          return;
        } catch (IOException ioe) {
          Log.e(
              TAG,
              "Problem reading from "
                  + url
                  + ": "
                  + ioe.getMessage()
                  + ". Will let WebView try loading it directly.",
              ioe);
        } finally {
          if (fis != null) {
            try {
              fis.close();
            } catch (IOException e) {
              Log.w(TAG, "Problem closing stream: " + e.getMessage(), e);
            }
          }
        }
      }
    }

    Log.d(TAG, "WebView will load " + url + " directly without code injection.", Log.DEBUG_MODE);
    // iOS parity: for whatever reason, when a remote url is used, the iOS implementation
    // explicitly sets the native webview's setScalesPageToFit to YES if the
    // Ti scalesPageToFit property has _not_ been set.
    if (!proxy.hasProperty(TiC.PROPERTY_SCALES_PAGE_TO_FIT)) {
      getWebView().getSettings().setLoadWithOverviewMode(true);
    }
    isLocalHTML = false;
    getWebView().loadUrl(finalUrl);
  }