Возможность выбора пользователем действия для определенного формата файла с помощью опции private in-app с помощью обычного диалогового окна

Допустим, мое Android-приложение управляет определенным форматом файла, который может быть открыт внешним приложением посредством отправки намерения. Мое приложение отправляет намерение, и пользователю предлагается выбрать, какое приложение должно его обрабатывать.

Я хотел бы, чтобы мое приложение имеет действие, которое также может обрабатывать этот формат сам.
Это действие в моем приложении не должно быть доступно пользователю из другого приложения, которое отправляет тот же тип намерения, чтобы открыть вышеупомянутый формат файла.

Таким образом, это должно быть просто выбор для пользователя, какое приложение использовать, даже само мое приложение, когда мое приложение отправляет намерение с этим форматом файла.

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

Можно ли использовать тот же диалог выбора приложений, который Android показывает пользователю?

1 ответ

  1. Использовать EXTRA_INITIAL_INTENTS:

      // Intent original is an Intent to start your own internal activity
      // Intent toChooseFrom is an Intent to start third-party activities;
      // String title is the title to display as part of the chooser
    
      Intent chooser=Intent.createChooser(toChooseFrom, title);
    
      chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,
        new Intent[] {original});
    
      // call startActivity()/startActivityForResult(), passing in chooser
    

    Ваша внутренняя активность будет отображаться в окне выбора (обычно спереди) вместе с любыми действиями третьих сторон, которые могут обрабатывать запрос. Ваши действия не должны <intent-filter>быть экспортированы или экспортированы иным образом.