Обрезка изображения при выборе его из галереи в Android 4.4

Я пытаюсь предоставить возможность обрезки изображения, выбранного из галереи, он отлично работает, кроме Android 4.4. Как решить эту проблему? я использую следующий код

Вот как я вызываю намерение галереи на основе версии Android

ImageView ivGallery = (ImageView) pop.findViewById(R.id.ivGallery);
                ivGallery.setOnClickListener(new OnClickListener()
                {
                    @SuppressLint("InlinedApi")
                    @Override
                    public void onClick(View v)
                    {
                        if (Build.VERSION.SDK_INT < 19)
                        {
                            Intent intent = new Intent();
                            pop.dismiss();
                            intent.setType("image/*");
                            intent.setAction(Intent.ACTION_GET_CONTENT);
                            intent.putExtra("crop", "true");
                            intent.putExtra("return-data", true);
                            intent.putExtra("aspectX", 300);
                            intent.putExtra("aspectY", 300);
                            intent.putExtra("outputX", 300);
                            intent.putExtra("outputY", 300);

                            startActivityForResult(intent, StaticMembers.galleryRequestCode); //1=gallery
                        }
                        else
                        {
                            picUri = ImageUtils.getTempUri();
                            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                            intent.addCategory(Intent.CATEGORY_OPENABLE);
                            intent.setType("image/*");
                            intent.putExtra(MediaStore.EXTRA_OUTPUT, picUri);
                            pop.dismiss();
                            startActivityForResult(intent, StaticMembers.GALLERY_KITKAT_INTENT_CALLED);
                        }

                    }
                });

Это мой onActivityResult

@SuppressLint("NewApi")
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == StaticMembers.galleryRequestCode && resultCode == Activity.RESULT_OK)
        {
            Utils.deleteTempFolder();
            Bundle extras = data.getExtras();
            try
            {
                Thread.sleep(2000);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            bmp = extras.getParcelable("data");
            thumbBitmap = Bitmap.createScaledBitmap(bmp, 100, 100, true);
            imgdp.setImageBitmap(bmp);
            setConfirmPicDialog();
        }
        else if (requestCode == StaticMembers.GALLERY_KITKAT_INTENT_CALLED && resultCode == Activity.RESULT_OK)
        {
            Log.d("kitkat", "Inside onActivity result for kitkat");
            picUri = data.getData();
            performCrop(); //what is to be done here?



        }



    }

    private void performCrop()
    {
        try
        {
            Intent cropIntent = new Intent("com.android.camera.action.CROP");
            cropIntent.setDataAndType(picUri, "image/*");
            cropIntent.putExtra("crop", "true");
            cropIntent.putExtra("return-data", true);
            cropIntent.putExtra("aspectX", 300);
            cropIntent.putExtra("aspectY", 300);
            cropIntent.putExtra("outputX", 300);
            cropIntent.putExtra("outputY", 300);
            startActivityForResult(cropIntent, StaticMembers.galleryRequestCode);
        }
        catch (ActivityNotFoundException anfe)
        {
            String errorMessage = "Whoops - your device doesn't support the crop action!";
            Toast toast = Toast.makeText(UserInfoActivity.this, errorMessage, Toast.LENGTH_SHORT);
            toast.show();
        }
    }

Какие изменения следует внести в приведенный выше код, чтобы иметь возможность обрезки в Android 4.4


person Rohan    schedule 25.03.2014    source источник
comment
см. это... software.techassistbox.com /   -  person Farhan Shah    schedule 25.03.2014
comment
Проверьте мой ответ здесь stackoverflow.com/questions/22576049/   -  person Piyush    schedule 25.03.2014
comment
@PiYusHGuPtA, понимаешь, мне не следует добавлять категорию?   -  person Rohan    schedule 25.03.2014
comment
@Rohan Нет ... Если вы используете это шоу, вы можете получить изображение, но пока появляется функция обрезки, появляется ошибка остановки вашей галереи.   -  person Piyush    schedule 25.03.2014
comment
Точно .. я получаю ту же ошибку .. я попытаюсь использовать то, что вы сделали .. Спасибо   -  person Rohan    schedule 25.03.2014
comment
Это мое текущее ActivityName.   -  person Piyush    schedule 25.03.2014
comment
@PiYusHGuPtA, твой код сработал, спасибо, приятель   -  person Rohan    schedule 25.03.2014
comment
@ Рохан, добро пожаловать .. рад помочь вам .. Вы можете проголосовать за мой ответ, если он вам поможет !!   -  person Piyush    schedule 25.03.2014


Ответы (1)


Не рекомендуется использовать функции кадрирования Галереи. В некоторых прошивках он отсутствует, поэтому в некоторых случаях приложение может даже вылетать.

Вместо этого вы можете использовать эту библиотеку android-cropiimage.

person Minas    schedule 25.03.2014