Какую цель выполняют различные конструкторы Intent?

Intent(String action, Uri uri) Create an intent with a given action and for a given data url. Intent(Context packageContext, Class<?> cls) Create an intent for a specific component. Intent(String action, Uri uri, Context packageContext, Class<?> cls) Create an intent for a specific component with a specified action and data. 

Хотя для некоторых это может быть очевидно, могли бы вы, ребята, помочь тем из нас, которым трудно «получить»?

Например, в какой ситуации я хочу 1 над другой?

Существует два типа намерений:

  • Explicit intents определяют компонент для запуска по имени (полное имя класса). Обычно вы будете использовать явное намерение запустить компонент в своем собственном приложении, потому что вам известно имя класса для той или иной деятельности или службы, которую вы хотите запустить. Например, запустите новое действие в ответ на действие пользователя или запустите службу для загрузки файла в фоновом режиме.
  • Implicit intents не называют конкретный компонент, а вместо этого объявляют общее действие для выполнения, которое позволяет компоненту из другого приложения обрабатывать его. Например, если вы хотите показать пользователю местоположение на карте, вы можете использовать неявное намерение запросить, чтобы другое способное приложение отображало указанное местоположение на карте.

Когда вы создаете явное намерение начать действие или службу, система немедленно запускает компонент приложения, указанный в объекте Intent.

Когда вы создаете неявное намерение, система Android находит соответствующий компонент для начала, сравнивая содержимое намерения с фильтрами намерений, объявленными в файле манифеста других приложений на устройстве. Если цель совпадает с фильтром намерения, система запускает этот компонент и доставляет ему объект Intent. Если несколько фильтров намерения совместимы, система отображает диалоговое окно, чтобы пользователь мог выбрать, какое приложение использовать.

Читать дальше: Intents and Intent Filters


Возвращаясь к вашему вопросу, все эти три конструкции – это способы создания неявных / явных намерений. где

  • Intent(String action, Uri uri) создает неявное намерение с заданным действием и uri.

  • Intent(Context packageContext, Class<?> cls) создает явное намерение.

  • Intent(String action, Uri uri, Context packageContext, Class<?> cls) создает явное намерение с заданным действием и uri.

-использование намерения с строкой «Действие», когда вы хотите сделать какое-то действие [Intent.ACTION_DIAL, Intent.ACTION_VIEW] в случае неявного намерения. Указание трансляционного вещателя для трансляции некоторого сообщения. -Intent (Context packageContext, Class cls), когда вы хотите вызывать только новую активность из существующей активности, которую вы можете использовать.

Случай 1: запрашивает конкретное действие (называемое неявным намерением), IE

  Intent(INTENT.ACTION_DIAL,Uri.parse("555-555-5555")) 

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

Завершите действие с помощью Dialer My_dialer

И ждет выбора пользователя.

Случай 2: начинает другое действие, ссылаясь на его имя (явное намерение) IE

  Intent(Context.this,ActivityToBeLaunched.class) 

Случай 3: его сочетание первых двух: рассказывает о том, что активная деятельность делает что-то конкретное IE

  Intent(INTENT.ACTION_DIAL,Uri.parse("555-555-5555",Context.this,ActivityToBeLaunched.class)) 

Надейтесь, что это поможет вашему пониманию в намерениях!

Intereting Posts
Как указать темный режим действия с моей темой SurfaceTexture.OnFrameAvailableListener перестает быть вызванным ViewPager с компоновкой координатора Управление версиями и проекты библиотеки Android Расположение Android, изменение размера по процентам и поддержание пропорции Как добраться до события редактирования в календаре через программный код? Как вращать объект ObjectAnimator? Как передать объект из одной активности в другую на Android? Подпрограмма Spinner Откройте пользовательскую вкладку chrome из веб-обозревателя Android: обработчик CustomURL и небезопасное содержимое Рекомендации по созданию файлов перевода для нескольких платформ Android MapView – автоматическое масштабирование до тех пор, пока не будут видны все ItemizedOverlay Android получить полную ширину для пользовательского диалога FindViewById, где ID – динамическая строка Использование Webrtc в приложении Native