2014-12-02 2 views
0

См. Документацию по IntentFilters:Намерение без действия не может пройти тест фильтра намерения. Зачем?

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

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

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

В моем коде,

Intent intent = new Intent(); 
    startActivity(intent); 


<activity 
     android:name=".MainActivity2" 
     android:label="@string/title_activity_main_activity2" > 

     <intent-filter> 
      <action android:name="fdsfds.hihi" /> 
      <category android:name="android.intent.category.DEFAULT" /> 

     </intent-filter> 
</activity> 

Почему мои намерения не может запустить .MainActivity2?

+0

http://stackoverflow.com/questions/17701997/intent-filter-without-action – CommonsWare

+0

Это другой вопрос. – user2894168

+0

потому что в ваших намерениях нет ничего. – njzk2

ответ

0
Intent intent = new Intent(); 
intent.setAction("fdsfds.hihi"); 
startActivity(intent); 
+0

Это не то, что я хочу сделать. Я хотел бы проверить, может ли объект намерения без действия передать фильтр намерения или не так, как сказано в документе Android. – user2894168

+0

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

+0

Yup. Значит, вы считаете, что это ошибка в андроидном документе? – user2894168

0

Несмотря на то, что прошло год, я отвечу.

Во-первых, я согласен с вами, иногда документ Android несовместим, он оставляет некоторые сомнения.

Однако в этом случае документация прав:

если Намерение не определяет действие, он будет проходить тест (при условии, что фильтр содержит, по меньшей мере, одно действие).

В документации не говорится, что если действие не определено, необходимо определить хотя бы поле данных (или поле mime).

В заключение не может быть намерения без какого-либо действия или данных.

Как @Amrut Bidri сказал, вы не можете ездить на велосипеде без топлива.

0

Возможно, вам уже слишком поздно, чтобы получить ответ. Я приземлился здесь, потому что у меня были такие же сомнения, как и вы. Думаю, ты сделал тот же самый ошибочный поступок, что и я. Я путал объект намерения с фильтр намерений. Но при тщательном прочтении документации мои сомнения были решены.

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

Вы не указали какие-либо действия в фильтре, и, следовательно, все тесты действий не сработают (и по расширению совпадение намерений завершится с ошибкой).

Смежные вопросы