Описание тега android-implicit-intent

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

Из официальной документации Android:

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

Например, если у вас есть контент, которым вы хотите, чтобы пользователь поделился с другими людьми, создайте намерение с помощью действия ACTION_SEND и добавьте дополнения, которые определяют контент, которым вы хотите поделиться. Когда вы вызываете startActivity() с этим намерением, пользователь может выбрать приложение, через которое будет делиться контентом.

Внимание! Возможно, у пользователя не будет приложений, обрабатывающих неявное намерение, которое вы отправляете в startActivity(). Если это произойдет, вызов завершится неудачно, и ваше приложение выйдет из строя. Чтобы убедиться, что действие получит намерение, вызовите resolveActivity() для вашего объекта Intent. Если результат не равен нулю, то есть по крайней мере одно приложение, которое может обрабатывать намерение, и можно безопасно вызывать startActivity(). Если результат равен нулю, вы не должны использовать намерение и, если возможно, вы должны отключить функцию, которая выдает намерение.

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType(HTTP.PLAIN_TEXT_TYPE); // "text/plain" MIME type

// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}

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

Когда вызывается startActivity(), система проверяет все установленные приложения, чтобы определить, какие из них могут обрабатывать такого рода намерения (намерение с действием ACTION_SEND и которое несет "текстовые / простые" данные). Если есть только одно приложение, которое может с этим справиться, оно открывается немедленно и получает намерение. Если несколько действий принимают намерение, система отображает диалоговое окно, в котором пользователь может выбрать, какое приложение использовать.