Подтвердить что ты не робот

Android подразумевает намерения VS явные намерения

Работая с android, я понял, что неявные намерения являются хорошим выбором в большинстве случаев из-за их гибкости. Но как насчет явных намерений? Каковы преимущества их использования? Каковы распространенные случаи использования хорошей практики?

4b9b3361

Ответ 1

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

например

Intent intent = new Intent(ACTION_VIEW,Uri.parse("http://www.google.com"));

это заставит веб-браузер открыть веб-страницу. Система Android ищет все компоненты, которые зарегистрированы для определенного действия и типа данных. Если найдено много компонентов, пользователь может выбрать, какой компонент использовать.

Явные намерения используются в самом приложении, где одно действие может переключиться на другое действие... Пример Intent intent = new Intent(this,Target.class); это вызывает переключение активности из текущего контекста в целевую активность. Явные намерения также можно использовать для передачи данных в другое действие с использованием метода putExtra и извлечения целевым действием с помощью getIntent().getExtras().

Надеюсь, это помогло.

Ответ 2

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

Ответ 3

  • Явные намерения используются для вызова определенного компонента. Когда вы знаете, какой компонент вы хотите запустить, и вы не хотите предоставлять пользователю свободный контроль над тем, какой компонент использовать. Например, у вас есть приложение, которое имеет 2 действия. Активность A и активность B. Вы хотите запустить активность B из действия A. В этом случае вы определяете явное намерение таргетинга activityB, а затем используете его для прямого вызова.

  • Неявные намерения используются, когда у вас есть представление о том, что вы хотите сделать, но вы не знаете, какой компонент должен быть запущен. Или, если вы хотите дать пользователю возможность выбирать между списком используемых компонентов. Если эти намерения отправляются в систему Android, он ищет все компоненты, зарегистрированные для конкретного действия и типа данных. Если найден только один компонент, Android запускает компонент напрямую. Например, у вас есть приложение, которое использует камеру для съемки фотографий. Одна из особенностей вашего приложения заключается в том, что вы предоставляете пользователю возможность отправлять фотографии, которые он сделал. Вы не знаете, какое приложение у пользователя может отправлять фотографии, и вы также хотите дать пользователю возможность выбрать, какое внешнее приложение использовать, если у него более одного. В этом случае вы не будете использовать явное намерение. Вместо этого вы должны использовать неявное намерение, действие которого установлено на ACTION_SEND, и его данные добавлены в URI фотографии.

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

Ответ 4

1) Явное намерение: разработчик имени компонента знает так, имя указано в Intent.

2) Неявное намерение: не указано компонент в намерении.

Ответ 5

КЛЮЧ: Когда ты знаешь, а когда не знаешь

Явное намерение:

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

Пример: у вас есть действие "Список", и когда вы щелкаете элемент в списке, он открывает действие "Деталь". В этом случае вы ЗНАЕТЕ, что детали элемента могут быть показаны или обработаны с помощью DetailActivity.class вашего приложения. Таким образом, чтобы выполнить это действие, вы создаете Intent, явно указав имя класса.

Intent showDeatil = new Intent(this,DetaiActivy.class);  
startActivity(showDeatil);

Неявное намерение:

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

Пример: у вас есть ссылка. Когда вы нажимаете на ссылку, она должна открывать веб-страницу в каком-либо браузере. Вы НЕ ЗНАЕТЕ, какая именно деятельность в каком приложении может обработать ваш запрос. Вы просто имеете смутное представление о том, что это ссылка на веб-страницу, поэтому она должна открывать веб-страницу в каком-либо браузере, когда кто-то ее открывает. В этом случае вы просто указываете ДЕЙСТВИЕ, а остальная часть заботится об ОС.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);

БОНУС:

Как решает ОС?

Для этого есть термин. Это называется намеренным решением.
Намеренное разрешение.

  • ОС принимает ДЕЙСТВИЕ, указанное в вашем намерении.

  • Заходит в PackageManager и ищет все зарегистрированные действия с соответствующим действием ACTION для всех приложений, установленных на вашем устройстве.

  • Показывает список всех соответствующих приложений во всплывающем окне.

Более безопасный способ писать неявные намерения.

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

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

Как заставить ваше приложение попасть в этот всплывающий список?

Допустим, вы написали какое-то приложение для браузера. Если вы хотите, чтобы ваши приложения отображались во всплывающем списке, когда кто-то открывает ссылку. Затем вам нужно зарегистрировать свою активность с действием, используя файл Intent Filters AndroidManifest.xml. Как это.

<application
    .....  >

    ......
    <activity android:name=".YourBrowserActivity">
        <action android:name="android.intent.action.VIEW" />       
        <data android:scheme="http" android:host="www.example.com" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
    </activity>
 ..... 


</application>

Рекомендации
Общие намерения ДЕЙСТВИЯ и их список Intent-Filters
Подробнее о фильтрах намерений и разрешении намерений

Ответ 6

От Документы:

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

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

Ответ 8

Просто мы можем описать оба намерения, как это..

Явные намерения: они используются для связи между двумя действиями в одном приложении.

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

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

Например: рассмотрим новостное приложение, в котором описывается авария, в которой видео аварии записано и загружено в Facebook. При нажатии на ссылку, указанную в приложении новостей, он направит нас в Facebook. В этом случае связь происходит между действием в приложении новостей и действием в приложении Facebook. Для этой цели мы используем Implicit Intents.

Я надеюсь, что вы можете понять.

Ответ 9

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

Ответ 10

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

например

Intent intent = new Intent (ACTION_VIEW, Uri.parse( " http://www.google.com" );

это заставит веб-браузер открыть веб-страницу. Система Android ищет все компоненты, которые зарегистрированы для конкретного действия и типа данных. Если найдено много компонентов, пользователь может выбрать, какой компонент использовать.

Явные намерения используются в самом приложении, в котором одно действие может переключиться на другую активность... Пример Intent intent = new Intent (this, Target.class); это приводит к переключению активности из текущего контекста в целевую. Явные намерения также могут использоваться для передачи данных в другую деятельность с использованием метода putExtra и получения целевой активности методом getIntent(). GetExtras()...

Ответ 11

Неявное намерение

  • Он вытягивает новое приложение без указания, какое из них подтянуть.
  • Он указывает только действие, которое нужно выполнить, и не указывает напрямую компоненты Android.
  • URI может использоваться с неявным намерением для указания типа данных.

Явный Намерение

  • Он запустит конкретное приложение и будет настроен во время написания кода.
  • Он используется в самом приложении, где один вид деятельности может переключаться на другой вид деятельности.
  • Используется для передачи данных в другое действие, используя дополнительный метод put и получаемый целевым действием getIntent().
  • Он всегда доставляется к цели, даже если фильтр не используется.

Ответ 12

Используя намерение, вы можете достичь этого...

Intent intent = new Intent (FirstActivity.this, SecondActivity.class); startActivity (намерение);

Вы хотите получить дополнительную информацию Нажмите на эту ссылку...

https://theandroidcodings.blogspot.com/2019/04/android-move-to-activity.html