0

外部の画像エディターを使用してアプリ内の画像を更新したいと考えています。次のコードを使用してアプリを起動し、画像を更新しています。

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 アプリを使用して画像を更新すると、すべてがうまくいきます。Motorla Gallery アプリが起動し、画像を更新して保存し、コントロールが onActivityResult に戻ると、更新された画像を取得して処理できます。返されるインテントは次のようになります。

Googleフォトアプリを使用すると、コードintent.getData()は、デバッガーでこのintent = {Intent@5486} Intent {typ=image/jpeg}のようなインテントを返します。返されたインテントに Uri がなく、更新された画像を取得できません。また、おまけもありません。

私は何が欠けていますか?ありがとうございました。

4

1 に答える 1

1

のドキュメントには、ACTION_EDIT次のように明確に記載されています。

出力: 何もありません。

したがって、「Google フォト アプリ」は正常に動作しています。

そもそもUri画像に入れているので、画像のことはすでに知っています。ACTION_EDIT Intentだから、それを使用してください。

于 2015-12-05T00:23:22.643 に答える