Можете ли вы определить фильтр намерений Android, используя строковый ресурс?
Я хотел определить имя строки моего намерения в файле strings.xml
, а затем привязать эту строку к фильтру намерения так:
<intent-filter >
<action android:name="@string/app_intent" >
</action>
<category android:name="android.intent.category.DEFAULT" >
</category>
</intent-filter>
Однако, когда я это пробовал, я получаю различные ошибки о том, что система не может найти никакой активности для обработки моих намерений. Я пытался сохранить значения (т.е. Названия целей) централизованными, а не жестко закодированными как в манифесте, так и в коде. Как бы то ни было, по крайней мере, это позволяет мне централизовать его из кода приложения, но у меня все еще есть жестко закодированное в манифесте.
Неужели это невозможно сделать или есть какой-то способ заставить его работать?
Ответы
Ответ 1
Не проблема с фильтром намерения, проблема связана с android:name
. Атрибут android:name
также не принимает строковый ресурс для имени активности. пример <activity android:name="@string/app" android:label="@string/app_name">
недействителен в android.
Ответ 2
Непосредственно не отвечая на вопрос OP, но что подтолкнуло меня к этому вопросу, так это то, что я хотел иметь возможность определять различные действия в разных ситуациях (включая определение действия, запускающего компонент в библиотеке Android в приложении, использующем эту библиотеку). В конце концов я обнаружил о манифестных заполнителях, которые на самом деле были мне нужны. Надеюсь, это будет полезно и кому-то еще.
PS: Да, определение заполнителя в приложении по-прежнему позволяет использовать его в библиотеке из-за слияния манифеста, происходящего во время сборки.