public void onResizeResult(PduPart part, boolean append) {
          Context context = SlideEditorActivity.this;
          if (part == null) {
            Toast.makeText(
                    SlideEditorActivity.this,
                    getResourcesString(R.string.failed_to_add_media, getPictureString()),
                    Toast.LENGTH_SHORT)
                .show();
            return;
          }

          try {
            long messageId = ContentUris.parseId(mUri);
            PduPersister persister = PduPersister.getPduPersister(context);
            Uri newUri = persister.persistPart(part, messageId);
            mSlideshowEditor.changeImage(mPosition, newUri);

            setReplaceButtonText(R.string.replace_image);
          } catch (MmsException e) {
            notifyUser("add picture failed");
            Toast.makeText(
                    SlideEditorActivity.this,
                    getResourcesString(R.string.failed_to_add_media, getPictureString()),
                    Toast.LENGTH_SHORT)
                .show();
          } catch (UnsupportContentTypeException e) {
            MessageUtils.showErrorDialog(
                SlideEditorActivity.this,
                getResourcesString(R.string.unsupported_media_format, getPictureString()),
                getResourcesString(R.string.select_different_media, getPictureString()));
          } catch (ResolutionException e) {
            MessageUtils.showErrorDialog(
                SlideEditorActivity.this,
                getResourcesString(R.string.failed_to_resize_image),
                getResourcesString(R.string.resize_image_error_information));
          } catch (ExceedMessageSizeException e) {
            MessageUtils.showErrorDialog(
                SlideEditorActivity.this,
                getResourcesString(R.string.exceed_message_size_limitation),
                getResourcesString(R.string.failed_to_add_media, getPictureString()));
          }
        }
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != RESULT_OK) {
      return;
    }

    switch (requestCode) {
      case REQUEST_CODE_EDIT_TEXT:
        // XXX where does this come from?  Action is probably not the
        // right place to have the text...
        mSlideshowEditor.changeText(mPosition, data.getAction());
        break;

      case REQUEST_CODE_TAKE_PICTURE:
        Uri pictureUri = null;
        boolean showError = false;
        try {
          pictureUri = TempFileProvider.renameScrapFile(".jpg", Integer.toString(mPosition), this);

          if (pictureUri == null) {
            showError = true;
          } else {
            mSlideshowEditor.changeImage(mPosition, pictureUri);
            setReplaceButtonText(R.string.replace_image);
          }
        } catch (MmsException e) {
          Log.e(TAG, "add image failed", e);
          showError = true;
        } catch (UnsupportContentTypeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.unsupported_media_format, getPictureString()),
              getResourcesString(R.string.select_different_media, getPictureString()));
        } catch (ResolutionException e) {
          MessageUtils.resizeImageAsync(
              this, pictureUri, new Handler(), mResizeImageCallback, false);
        } catch (ExceedMessageSizeException e) {
          MessageUtils.resizeImageAsync(
              this, pictureUri, new Handler(), mResizeImageCallback, false);
        }
        if (showError) {
          notifyUser("add picture failed");
          Toast.makeText(
                  SlideEditorActivity.this,
                  getResourcesString(R.string.failed_to_add_media, getPictureString()),
                  Toast.LENGTH_SHORT)
              .show();
        }
        break;

      case REQUEST_CODE_CHANGE_PICTURE:
        try {
          mSlideshowEditor.changeImage(mPosition, data.getData());
          setReplaceButtonText(R.string.replace_image);
        } catch (MmsException e) {
          Log.e(TAG, "add image failed", e);
          notifyUser("add picture failed");
          Toast.makeText(
                  SlideEditorActivity.this,
                  getResourcesString(R.string.failed_to_add_media, getPictureString()),
                  Toast.LENGTH_SHORT)
              .show();
        } catch (UnsupportContentTypeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.unsupported_media_format, getPictureString()),
              getResourcesString(R.string.select_different_media, getPictureString()));
        } catch (ResolutionException e) {
          MessageUtils.resizeImageAsync(
              this, data.getData(), new Handler(), mResizeImageCallback, false);
        } catch (ExceedMessageSizeException e) {
          MessageUtils.resizeImageAsync(
              this, data.getData(), new Handler(), mResizeImageCallback, false);
        }
        break;

      case REQUEST_CODE_CHANGE_MUSIC:
      case REQUEST_CODE_RECORD_SOUND:
        Uri uri;
        if (requestCode == REQUEST_CODE_CHANGE_MUSIC) {
          uri = (Uri) data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
          if (Settings.System.DEFAULT_RINGTONE_URI.equals(uri)) {
            return;
          }
        } else {
          uri = data.getData();
        }

        try {
          mSlideshowEditor.changeAudio(mPosition, uri);
        } catch (MmsException e) {
          Log.e(TAG, "add audio failed", e);
          notifyUser("add music failed");
          Toast.makeText(
                  SlideEditorActivity.this,
                  getResourcesString(R.string.failed_to_add_media, getAudioString()),
                  Toast.LENGTH_SHORT)
              .show();
        } catch (UnsupportContentTypeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.unsupported_media_format, getAudioString()),
              getResourcesString(R.string.select_different_media, getAudioString()));
        } catch (ExceedMessageSizeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.exceed_message_size_limitation),
              getResourcesString(R.string.failed_to_add_media, getAudioString()));
        }
        break;

      case REQUEST_CODE_TAKE_VIDEO:
        try {
          Uri videoUri =
              TempFileProvider.renameScrapFile(".3gp", Integer.toString(mPosition), this);

          mSlideshowEditor.changeVideo(mPosition, videoUri);
        } catch (MmsException e) {
          notifyUser("add video failed");
          Toast.makeText(
                  SlideEditorActivity.this,
                  getResourcesString(R.string.failed_to_add_media, getVideoString()),
                  Toast.LENGTH_SHORT)
              .show();
        } catch (UnsupportContentTypeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.unsupported_media_format, getVideoString()),
              getResourcesString(R.string.select_different_media, getVideoString()));
        } catch (ExceedMessageSizeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.exceed_message_size_limitation),
              getResourcesString(R.string.failed_to_add_media, getVideoString()));
        }
        break;

      case REQUEST_CODE_CHANGE_VIDEO:
        try {
          mSlideshowEditor.changeVideo(mPosition, data.getData());
        } catch (MmsException e) {
          Log.e(TAG, "add video failed", e);
          notifyUser("add video failed");
          Toast.makeText(
                  SlideEditorActivity.this,
                  getResourcesString(R.string.failed_to_add_media, getVideoString()),
                  Toast.LENGTH_SHORT)
              .show();
        } catch (UnsupportContentTypeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.unsupported_media_format, getVideoString()),
              getResourcesString(R.string.select_different_media, getVideoString()));
        } catch (ExceedMessageSizeException e) {
          MessageUtils.showErrorDialog(
              SlideEditorActivity.this,
              getResourcesString(R.string.exceed_message_size_limitation),
              getResourcesString(R.string.failed_to_add_media, getVideoString()));
        }
        break;

      case REQUEST_CODE_CHANGE_DURATION:
        mSlideshowEditor.changeDuration(mPosition, Integer.valueOf(data.getAction()) * 1000);
        break;
    }
  }