Можете ли вы определить фильтр намерений Android, используя строковый ресурс? - PullRequest
15 голосов
/ 09 декабря 2011

Я хотел определить строковое имя моего намерения в файле strings.xml, а затем привязать эту строку к фильтру намерений следующим образом:

<intent-filter >
    <action android:name="@string/app_intent" >
    </action>

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

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

Это действительно невозможно сделать или есть какой-то способ заставить это работать?

Ответы [ 2 ]

6 голосов
/ 09 декабря 2011

Это не проблема с фильтром намерений, проблема с android:name. Атрибут android:name также не принимает строковый ресурс для имени действия. пример <activity android:name="@string/app" android:label="@string/app_name"> недопустим в Android.

1 голос
/ 16 апреля 2019

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

PS: Да, определение заполнителя в приложении по-прежнему позволяет использовать его в библиотеке из-за слияния манифеста, происходящего во время сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...