Галерея / PhotoPicker аварийно завершает работу на более поздних устройствах Android

У меня есть приложение, которое отлично работает на более старых версиях Android, однако на более поздних версиях (Android 11> и выше), в то время как функция камеры (сделать фото) работает нормально, и разрешения в порядке. Я не могу использовать функцию PhotoPicker, она просто показывает пустое picker , прежде чем полностью вылетит из приложения — на старых устройствах фотогалерея устройства отображается правильно и позволяет выбрать фотографию для использования.

ЗдесьonCreateдля

      PhotoPickerActivity.java

public void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            requestWindowFeature(1);
            getWindow().setFlags(1024, 1024);
            boolean booleanExtra = getIntent().getBooleanExtra(PhotoPicker.EXTRA_SHOW_CAMERA, true);
            boolean booleanExtra2 = getIntent().getBooleanExtra(PhotoPicker.EXTRA_SHOW_GIF, false);
            boolean booleanExtra3 = getIntent().getBooleanExtra(PhotoPicker.EXTRA_PREVIEW_ENABLED, true);
            this.forwardMain = getIntent().getBooleanExtra(PhotoPicker.MAIN_ACTIVITY, false);
            setShowGif(booleanExtra2);
            setContentView(R.layout.__picker_activity_photo_picker);
            setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
            setTitle(getResources().getString(R.string.tap_to_select));
            ActionBar supportActionBar = getSupportActionBar();
            supportActionBar.setDisplayHomeAsUpEnabled(true);
           // if (Build.VERSION.SDK_INT >= 21) {
                supportActionBar.setElevation(25.0f);
          //  }
            this.maxCount = getIntent().getIntExtra(PhotoPicker.EXTRA_MAX_COUNT, 9);
            int intExtra = getIntent().getIntExtra(PhotoPicker.EXTRA_GRID_COLUMN, 3);
            this.originalPhotos = getIntent().getStringArrayListExtra(PhotoPicker.EXTRA_ORIGINAL_PHOTOS);
            this.pickerFragment = (PhotoPickerFragment) getSupportFragmentManager().findFragmentByTag("tag");
            if (this.pickerFragment == null) {
                this.pickerFragment = PhotoPickerFragment.newInstance(booleanExtra, booleanExtra2, booleanExtra3, intExtra, this.maxCount, this.originalPhotos);
                getSupportFragmentManager().beginTransaction().replace(R.id.container, this.pickerFragment, "tag").commit();
                getSupportFragmentManager().executePendingTransactions();
            }
            this.pickerFragment.getPhotoGridAdapter().setOnItemCheckListener(new OnItemCheckListener() {
    
                @Override
                public final boolean onItemCheck(int i, Photo photo, int i2) {
                    return PhotoPickerActivity.this.lambda$onCreate$0$PhotoPickerActivity(i, photo, i2);
                }
            });
        }

У нас также есть PhotoPicker.java

      public class PhotoPicker {
    public static final int DEFAULT_COLUMN_NUMBER = 3;
    public static final int DEFAULT_MAX_COUNT = 9;
    public static final String EXTRA_GRID_COLUMN = "column";
    public static final String EXTRA_MAX_COUNT = "MAX_COUNT";
    public static final String EXTRA_ORIGINAL_PHOTOS = "ORIGINAL_PHOTOS";
    public static final String EXTRA_PREVIEW_ENABLED = "PREVIEW_ENABLED";
    public static final String EXTRA_SHOW_CAMERA = "SHOW_CAMERA";
    public static final String EXTRA_SHOW_GIF = "SHOW_GIF";
    public static final String KEY_SELECTED_PHOTOS = "SELECTED_PHOTOS";
    public static final String MAIN_ACTIVITY = "MAIN_ACTIVITY";
    public static final int REQUEST_CODE = 233;

    public static PhotoPickerBuilder builder() {
        return new PhotoPickerBuilder();
    }

    public static class PhotoPickerBuilder {
        private Intent mPickerIntent = new Intent();
        private Bundle mPickerOptionsBundle = new Bundle();

        public void start(Activity activity, int i) {
            if (PermissionsUtils.checkReadStoragePermission(activity)) {
                activity.startActivityForResult(getIntent(activity), i);
            }
        }

        public void start(Context context, Fragment fragment, int i) {
            if (PermissionsUtils.checkReadStoragePermission(fragment.getActivity())) {
                fragment.startActivityForResult(getIntent(context), i);
            }
        }

        public void start(Context context, Fragment fragment) {
            if (PermissionsUtils.checkReadStoragePermission(fragment.getActivity())) {
                fragment.startActivityForResult(getIntent(context), PhotoPicker.REQUEST_CODE);
            }
        }

        public Intent getIntent(Context context) {
            this.mPickerIntent.setClass(context, PhotoPickerActivity.class);
            this.mPickerIntent.putExtras(this.mPickerOptionsBundle);
            return this.mPickerIntent;
        }

        public void start(Activity activity) {
            start(activity, PhotoPicker.REQUEST_CODE);
        }

        public PhotoPickerBuilder setPhotoCount(int i) {
            this.mPickerOptionsBundle.putInt(PhotoPicker.EXTRA_MAX_COUNT, i);
            return this;
        }

        public PhotoPickerBuilder setGridColumnCount(int i) {
            this.mPickerOptionsBundle.putInt(PhotoPicker.EXTRA_GRID_COLUMN, i);
            return this;
        }

        public PhotoPickerBuilder setShowGif(boolean z) {
            this.mPickerOptionsBundle.putBoolean(PhotoPicker.EXTRA_SHOW_GIF, z);
            return this;
        }

        public PhotoPickerBuilder setShowCamera(boolean z) {
            this.mPickerOptionsBundle.putBoolean(PhotoPicker.EXTRA_SHOW_CAMERA, z);
            return this;
        }

        public PhotoPickerBuilder setSelected(ArrayList<String> arrayList) {
            this.mPickerOptionsBundle.putStringArrayList(PhotoPicker.EXTRA_ORIGINAL_PHOTOS, arrayList);
            return this;
        }

        public PhotoPickerBuilder setForwardMain(boolean z) {
            this.mPickerOptionsBundle.putBoolean(PhotoPicker.MAIN_ACTIVITY, z);
            return this;
        }

        public PhotoPickerBuilder setPreviewEnabled(boolean z) {
            this.mPickerOptionsBundle.putBoolean(PhotoPicker.EXTRA_PREVIEW_ENABLED, z);
            return this;
        }
    }
}

В AndroidManifest.xml есть разрешения для камеры, и во время выполнения они проверяются, и разрешение предоставляется.

0 ответов

Другие вопросы по тегам