Как получить первые два намерения выбора и отображать только их для пользователя в Android

Я пытаюсь отобразить только галерею и файловый менеджер в намерении выбора

Итак, я попробовал что-то вроде ниже

Intent intent = new Intent();
                intent.setType("image/*");
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                intent.putExtra(Intent.EXTRA_LOCAL_ONLY,true);
                intent.setAction(Intent.ACTION_PICK);
                startActivityForResult(Intent.createChooser(intent, "Select Picture"), RESULT_LOAD_IMAGE);

Но наряду с галереей и проводником отображаются и другие приложения. Так же показывает гугл диск

Итак, я решил выбрать только первые два намерения и удалить остальные.

Как этого добиться?


person shiv    schedule 11.02.2020    source источник


Ответы (2)


Для вашего случая самый простой способ добиться того, что вам нужно, это

добавить строку ниже

intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

Добавив строку выше, вы можете избавиться от установленных пользователем приложений. но знайте одну вещь

  • при использовании intent.setAction(Intent.ACTION_PICK); вы увидите Галерею, Диспетчер файлов и любое встроенное приложение для работы с фотографиями по производителю телефона.
  • когда вы используете intent.setAction(Intent.ACTION_GET_CONTENT); вместе с указанным выше, вы также увидите диск Google.

Не выбирайте первые два намерения выбора, это не рекомендуется, и я не знаю причины, также я не знаю, как это сделать.

Надеюсь, это дает правильное объяснение с ответом.

person Vikas Acharya    schedule 11.02.2020
comment
Это просто прямой ответ, чего я ожидаю. Спасибо - person shiv; 11.02.2020
comment
Я не предлагаю фильтровать первые два намерения. если вы все еще хотите обратиться сюда stackoverflow.com/a/22368585/12773602 - person Vikas Acharya; 11.02.2020
comment
Мне больше не нужна эта техника. Приведенного выше ответа достаточно для моего проекта. - person shiv; 11.02.2020

используйте этот тип кода:

Intent i= new Intent(Intent.ACTION_GET_CONTENT);
    i.setType("image/*");

    Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    pickIntent.setType("image/*");

    Intent chooserIntent = Intent.createChooser(i, "Select Image");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {pickIntent});

    startActivityForResult(chooserIntent, PICK_IMAGE);
person sparkle ramani    schedule 11.02.2020