4

I made an Gallery Pick Intent.

  final Intent galleryIntent = new Intent();
        galleryIntent.setType("image/*");
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        activity.startActivityForResult(galleryIntent, requestCode);

I choose a picture from google drive and return to onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
         if (requestCode == REQUEST_GALLERY_PICK) {
            try {
                setAvatar(ImageUtils.getPath(EditClientActivity.this, data.getData(), IMAGE));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } else {
        avatarSizeOriginal = null;
    }
}

Here I get the path from selected Image:

 public static String getPath(Context ctx, Uri uri, String fileType) {
        String mPath = null;
        Cursor mCursor;
        String[] mColumns = {MediaStore.Images.Media.DATA};

        if (uri == null) {
            return null;
        }

        // algorithm to be used for devices starting with KK
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            String mId = uri.getPathSegments().get(uri.getPathSegments().size() - 1);
            String mSelection = "";
            Uri mProvider = null;

            if (mId.contains(":")) {
                final String[] split = mId.split(":");
                mId = split[1];
            }

            if (fileType.equals(FileTypes.IMAGE)) {
                mSelection = MediaStore.Images.Media._ID + "=?";
                mProvider = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            }
            if (fileType.equals(FileTypes.VIDEO)) {
                mSelection = MediaStore.Video.Media._ID + "=?";
                mProvider = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
            }
            if (fileType.equals(FileTypes.AUDIO)) {
                mSelection = MediaStore.Audio.Media._ID + "=?";
                mProvider = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            }

            mCursor = ctx.getContentResolver().query(mProvider, mColumns, mSelection, new String[]{mId}, null, null);

        } else {
            mCursor = ctx.getContentResolver().query(uri, mColumns, null, null, null);
        }

        int column_index = mCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

        if (mCursor != null && mCursor.moveToFirst()) {
            mPath = mCursor.getString(column_index);
            mCursor.close();
        }
        if (mPath==null) {
            mPath = uri.getPath();
        }
        return mPath;
    }

And at last when I try to use the image i get a crash:

private void setAvatar(String path) throws IOException {

        avatarSizeOriginal = new File(path);
        initialAvatar = new File(path);}

It indicates path /document/acc=1;doc=231

How to deal with such issue ?

vasile
  • 505
  • 1
  • 4
  • 11

0 Answers0