title: How can I programmatically take a screenshot of a webview, capturing the full page?
body: <p>I think the title pretty much covers it, but I have a webview in my activity. I've loaded a url into the webview and I'd like to take a screenshot of the full page (whatever is in the viewport and the stuff "below the fold" as well).</p>
  
  <p>I've got code that works to snapshot the viewport, and I know this can be done in iOS by enlarging the webview before snapshotting it. I've tried to use the same technique here:</p>
  
  <pre><code>    WebView browserView = (WebView) findViewById(R.id.browserView);
  
      //Resize the webview to the height of the webpage
      int pageHeight = browserView.getContentHeight();
      LayoutParams browserParams = browserView.getLayoutParams();
      browserView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, pageHeight));
  
      //Capture the webview as a bitmap
      browserView.setDrawingCacheEnabled(true);
      Bitmap bitmap = Bitmap.createBitmap(browserView.getDrawingCache());
      browserView.setDrawingCacheEnabled(false);
  
      //Create the filename to use
      String randomFilenamepart = String.valueOf(new SecureRandom().nextInt(1000000));
      String filename = Environment.getExternalStorageDirectory().toString() + "/Screenshot_" + randomFilenamepart + ".jpg";
      File imageFile = new File(filename);
      //Stream the file out to external storage as a JPEG
      OutputStream fout = null;
      try {
          fout = new FileOutputStream(imageFile);
          bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
          fout.flush();
          fout.close();
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      } finally {
          browserView.setLayoutParams(browserParams);
      }
  </code></pre>
  
  <p>But I'm still only capturing just the viewport. Disregarding things like running out of memory because the page is too large, does anyone know what I'm doing wrong or how I can include the portion outside the viewport?</p>