Android: передача параметров в Activity из AndroidManifest.xml
Кто-нибудь знает, можно ли передавать параметры в Activity из файла AndroidManifest.xml? Я хочу использовать одну и ту же активность в нескольких приложениях, но имею возможность настроить внешний вид этого действия на основе приложения.
например. Я хотел бы написать что-то вроде (в AndroidManifest.xml)
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<extradata>
<item name="foo" value="bar"/>
</extradata>
</activity>
.. и иметь возможность считывать значение bar в onCreate активности. Это что-то, что можно сделать с атрибутом данных в фильтре намерения?
Спасибо,
Ответы
Ответ 1
Собственно, есть способ сделать именно это. Проверьте эту статью:
http://blog.iangclifton.com/2010/10/08/using-meta-data-in-an-androidmanifest/
Короче вы можете получить содержимое тега, используя это:
ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
String myApiKey = bundle.getString("my_api_key");
Тег метаданных определяется следующим образом:
<meta-data android:name="my_api_key" android:value="mykey123" />
Можно получить доступ к данным в значениях, но если вы хотите указать что-то, что связано с деятельностью, это гораздо более чистый подход.
Надеюсь, что это поможет.
Ответ 2
Используйте res/values /strings.xml
Сохраните данные здесь. Используйте что-то вроде
<string-array name = "foo">
<item>bar1</item>
<item>bar2</item>
<item>red</item>
<item>blue</item>
<item>one</item>
<item>two</item>
</string-array>
вы можете получить это, используя
Resources r;
r = getResources():
String[] foos = r.getStringArray(R.array.foo);
Я думаю, что это то, что вы ищете. Но если вы хотите стилизовать свое приложение, вы должны посмотреть на тему.
[пример для Android] [1]
[1]: http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html "ТЕМАТИЧЕСКИЙ ПРИМЕР"
Ответ 3
Я не думаю, что есть способ сделать это. (Плохой взлом может заключаться в том, чтобы использовать имя процесса для активности, чтобы сигнализировать что-то вроде этого.). Лучше всего было бы указать стандартный ресурс в каждом из ваших приложений, который содержит необходимую информацию для этой деятельности.