2011-02-28 18 views
12

¿Alguien sabe si es posible pasar parámetros a una actividad del archivo AndroidManifest.xml? Quiero utilizar la misma actividad en un par de aplicaciones, pero tengo una manera de condicionar la apariencia de esa actividad en función de la aplicación.Android: paso de parámetros a la actividad de AndroidManifest.xml

E.g. Me gustaría escribir algo así como (en AndroidManifest.xml)

<activity android:name=".MyActivity" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait"> 

     <extradata> 
       <item name="foo" value="bar"/> 
     </extradata> 
</activity> 

.. y ser capaz de leer el valor de la barra en el onCreate de la actividad. ¿Es esto algo que se puede hacer con el atributo de datos en un filtro de intención?

Gracias,

Respuesta

8

En realidad, no hay manera de hacer precisamente eso. Compruebe este artículo:

http://blog.iangclifton.com/2010/10/08/using-meta-data-in-an-androidmanifest/

En resumen se puede obtener el contenido de la etiqueta usando la siguiente:

ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(),  PackageManager.GET_META_DATA); 
Bundle bundle = ai.metaData; 
String myApiKey = bundle.getString("my_api_key"); 

etiqueta de metadatos se define como esto:

<meta-data android:name="my_api_key" android:value="mykey123" /> 

Es posible para acceder a los datos en valores, pero si desea especificar algo que esté relacionado con la actividad, este es un enfoque mucho más limpio.

Espero que ayude.

0

No creo que haya una manera de hacer esto. (Un truco malo podría ser usar el nombre del proceso para la actividad para señalar algo como esto). Un enfoque mucho mejor sería especificar un recurso estándar en cada una de sus aplicaciones que contenga la información requerida para la actividad.

1

Use res/values ​​/ strings.xml

guardar los datos aquí. Use tantos como

<string-array name = "foo"> 
<item>bar1</item> 
<item>bar2</item> 
<item>red</item> 
<item>blue</item> 
<item>one</item> 
<item>two</item> 
</string-array> 

a continuación, puede conseguir esto mediante el uso

Resources r; 

r = getResources(): 

String[] foos = r.getStringArray(R.array.foo); 

creo que esto es lo que busca. Pero si buscas estilizar tu aplicación, entonces deberías mirar usando un tema.

[androide ejemplo para los temas] [1]

[1]: "Ejemplo TEMA" http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

Cuestiones relacionadas