Android:将参数从AndroidManifest.xml传递到Activity

时间:2011-02-28 17:05:54

标签: android android-manifest

有没有人知道是否可以将参数传递到AndroidManifest.xml文件中的Activity?我想在几个应用程序中使用相同的活动,但有办法根据应用程序调整该活动的外观。

E.g。我想写一些像(在AndroidManifest.xml中)

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

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

..并且能够在活动的onCreate中读出bar的值。这是否可以通过intent过滤器中的data属性来完成?

谢谢,

3 个答案:

答案 0 :(得分:9)

实际上,有办法做到这一点。查看这篇文章:

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" />

可以访问值中的数据,但是如果要指定与活动相关的内容,则这是更清晰的方法。

希望它有所帮助。

答案 1 :(得分:1)

使用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“主题示例”

答案 2 :(得分:0)

我认为没有办法做到这一点。 (糟糕的黑客可能是使用活动的进程名称来表示这样的信号。)更好的方法是在每个应用程序中指定一个标准资源,其中包含活动所需的信息。