2015-12-05 24 views
0

我想使用外部图像编辑器更新我的应用程序中的图像。我使用下面的代码来启动应用程序来更新图像。使用intent时Android图片库不返回URI。ACTION_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)); 
     } 
    } 
} 

当我使用摩托罗拉图库应用程序更新每一件事情去分辩画面。 Motorla Gallery应用程序启动后,我更新图片并保存,当控件返回到onActivityResult时,可以获取并处理更新后的图片。返回的意图是这样的intent = {Intent @ 5486} Intent {dat = content:// media/external/images/media/22544}

当我使用Google Photo应用程序代码intent.getData )在调试器中返回这样的意图intent = {Intent @ 5486} Intent {typ = image/jpeg}。返回的意图中没有Uri,我无法获取已更新的图像。也没有额外的东西。

我错过了什么? 谢谢。

回答

1

The documentation for ACTION_EDIT明确规定:

输出:没有。

因此,“Google相册应用程序”工作正常。

您已经知道图像中的Uri,因为您首先将它放在ACTION_EDITIntent中。所以,使用它。

+0

嗨CommnsWare,你是rigth。刚刚从Google Photo App的前一个URI中选取了更新后的图片。摩托罗拉Gallery应用程序返回一个意图,因为它创建一个新的图像。谢谢+1。 – Carlos

相关问题