private void deleteMedia() {
   if (uriFragmentToMedia == null) {
     return;
   }
   // get the file path and delete the file
   File f = ODKFileUtils.getRowpathFile(appName, tableId, instanceId, uriFragmentToMedia);
   String path = f.getAbsolutePath();
   // delete from media provider
   int del = MediaUtils.deleteVideoFileFromMediaProvider(this, appName, path);
   WebLogger.getLogger(appName).i(t, "Deleted " + del + " rows from video media content provider");
 }
  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    if (resultCode == Activity.RESULT_CANCELED) {
      // request was canceled -- propagate
      setResult(Activity.RESULT_CANCELED);
      finish();
      return;
    }

    Uri mediaUri = intent.getData();

    // it is unclear whether getData() always returns a value or if
    // getDataString() does...
    String str = intent.getDataString();
    if (mediaUri == null && str != null) {
      WebLogger.getLogger(appName).w(t, "Attempting to work around null mediaUri");
      mediaUri = Uri.parse(str);
    }

    if (mediaUri == null) {
      // we are in trouble
      WebLogger.getLogger(appName).e(t, "No uri returned from ACTION_CAPTURE_VIDEO!");
      setResult(Activity.RESULT_CANCELED);
      finish();
      return;
    }

    // Remove the current media.
    deleteMedia();

    // get the file path and create a copy in the instance folder
    String binaryPath = MediaUtils.getPathFromUri(this, (Uri) mediaUri, Video.Media.DATA);
    File source = new File(binaryPath);
    String extension = binaryPath.substring(binaryPath.lastIndexOf("."));

    if (uriFragmentToMedia == null) {
      // use the newFileBase as a starting point...
      uriFragmentToMedia = uriFragmentNewFileBase + extension;
    }

    // adjust the mediaPath (destination) to have the same extension
    // and delete any existing file.
    File f = ODKFileUtils.getRowpathFile(appName, tableId, instanceId, uriFragmentToMedia);
    File sourceMedia =
        new File(
            f.getParentFile(), f.getName().substring(0, f.getName().lastIndexOf('.')) + extension);
    uriFragmentToMedia = ODKFileUtils.asRowpathUri(appName, tableId, instanceId, sourceMedia);
    deleteMedia();

    try {
      FileUtils.copyFile(source, sourceMedia);
    } catch (IOException e) {
      WebLogger.getLogger(appName).e(t, ERROR_COPY_FILE + sourceMedia.getAbsolutePath());
      Toast.makeText(this, R.string.media_save_failed, Toast.LENGTH_SHORT).show();
      deleteMedia();
      setResult(Activity.RESULT_CANCELED);
      finish();
      return;
    }

    if (sourceMedia.exists()) {
      // Add the copy to the content provier
      ContentValues values = new ContentValues(6);
      values.put(Video.Media.TITLE, sourceMedia.getName());
      values.put(Video.Media.DISPLAY_NAME, sourceMedia.getName());
      values.put(Video.Media.DATE_ADDED, System.currentTimeMillis());
      values.put(Video.Media.DATA, sourceMedia.getAbsolutePath());

      Uri MediaURI =
          getApplicationContext()
              .getContentResolver()
              .insert(Video.Media.EXTERNAL_CONTENT_URI, values);
      WebLogger.getLogger(appName).i(t, "Inserting VIDEO returned uri = " + MediaURI.toString());
      uriFragmentToMedia = ODKFileUtils.asRowpathUri(appName, tableId, instanceId, sourceMedia);
      WebLogger.getLogger(appName)
          .i(t, "Setting current answer to " + sourceMedia.getAbsolutePath());

      // Need to have this ugly code to account for
      // a bug in the Nexus 7 on 4.3 not returning the mediaUri in the data
      // of the intent - uri in this case is a file
      int delCount = 0;
      if (NEXUS7.equals(android.os.Build.MODEL) && Build.VERSION.SDK_INT == 18) {
        File fileToDelete = new File(mediaUri.getPath());
        delCount = fileToDelete.delete() ? 1 : 0;
      } else {
        delCount = getApplicationContext().getContentResolver().delete(mediaUri, null, null);
      }
      WebLogger.getLogger(appName)
          .i(
              t,
              "Deleting original capture of file: " + mediaUri.toString() + " count: " + delCount);
    } else {
      WebLogger.getLogger(appName).e(t, "Inserting Video file FAILED");
    }

    /*
     * We saved the audio to the instance directory. Verify that it is there...
     */
    returnResult();
    return;
  }