2015-12-05 4 views
0

Я хочу обновить изображение в своем приложении с помощью внешнего редактора изображений. Я использую следующий код для запуска приложения для обновления изображения.Галерея фотографий Android не возвращает URI при использовании намерения. CATION_EDIT

private void dispatchAdjustImage(){ 

    try { 
     Integer mImageId = ImageHelper.getImageIdFromRealPath(getString(R.string.imageFilePath) + getString(R.string.imageFileName), getContentResolver()); 
     Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon().appendPath(mImageId.toString()).build(); 

     Intent adjustPictureIntent = new Intent(); 
     adjustPictureIntent.setDataAndType(uri, "image/*"); 
     adjustPictureIntent.setAction(Intent.ACTION_EDIT); 
     adjustPictureIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
     adjustPictureIntent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
     startActivityForResult(adjustPictureIntent, REQUEST_IMAGE_ADJUST); 
    }catch (ActivityNotFoundException anfe) { 
     Global.showDialog(NfScannerActivity.this, getString(R.string.msgErrorAdjustImageAppMissing), 
       getString(R.string.msgDownloadPhotoEditor), getString(R.string.textYes), 
       getString(R.string.textNo), getString(R.string.motorolaGalleryGooglePlayLink)).show(); 
    }catch (Exception ex) { 
     Toast.makeText(mContext, R.string.msgErrorAdjustImage, Toast.LENGTH_LONG).show(); 
    } 
} 

и это onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 

    switch (requestCode) 
    { 
     case REQUEST_IMAGE_ADJUST: 
      getAdjustImageResults(resultCode, intent); 
      unprotectViewFields(); 
      break; 
    } 

} 

private void getAdjustImageResults(int resultCode, Intent intent) { 

    if (resultCode == Activity.RESULT_OK) 
    { 
     clearViewFields(); 
     try { 
      Uri adjustedImageUri = intent.getData(); 
      String mFullFileName = ImageHelper.getRealPathFromURI(adjustedImageUri, this); 
      mImageBitmap = ImageHelper.readImageFromDisk(mFullFileName); 
      ImageHelper.deleteImageFromDisk(mFullFileName); 
      saveAndLoadImage(); 

     } catch (Exception e) { 
      showErrorDialog(getString(R.string.msgErrorAdjustImage)); 
     } 
    } 
} 

Когда я использую Motorola Gallery приложение, чтобы обновить изображение каждая вещь идет Rigth. Запускается приложение Gallery Motorla, я обновляю изображение, сохраняю его и когда элемент управления возвращается в onActivityResult, можно получить и обработать обновленное изображение. Возвращенное намерение состоит в том, как этот намерения = {Intent @ 5486} {Intent Дат = содержания: // СМИ/внешние/изображения/СМИ/22544}

Когда я использую Google приложение фото кода intent.getData () возвращает такое намерение intent = {Intent @ 5486} Intent {typ = image/jpeg} в отладчике. В возвращенном намерении нет Uri, и я не могу получить изображение, которое было обновлено. Также нет дополнительных услуг.

Что мне не хватает? Спасибо.

ответ

1

The documentation for ACTION_EDIT четко заявляет:

Вывод: ничего.

Следовательно, приложение «Google Фото» работает правильно.

Вы уже знаете Uri, потому что вы положите его в ACTION_EDITIntent в первую очередь. Итак, используйте это.

+0

Привет, CommnsWare, вы совершенно. Просто выбрал обновленное изображение из предыдущего URI для Google Photo App. Приложение Motorola Gallery возвращает намерение, потому что оно создает новое изображение. Спасибо +1. – Carlos

 Смежные вопросы

  • Нет связанных вопросов^_^